IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[défi n°3] le lien en français


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut [défi n°3] le lien en français
    http://javatwist.imingo.net/defi3.htm

    pourquoi comment ce lien est-il interprété ?

  2. #2
    Membre émérite
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Par défaut
    Celui-là je l'ai touvé un peu plus tordu que le précédent.

    Comment est interpêté ce lien ? et bien la vérité est ailleur...

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    heu a première vue je n'ai pas compris le but de la manoeuvre ... un lien vers le même page ... trop fort !!!

    bon je vais me pencher sur le code pour comprendre ou se situe le défi ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    JT craque

    Enfin, la prochaine fois qu'on me demandera à quoi servent les expressions regulieres, je pourrais au moins dire : "a generer des instructions cachées..."



    Enfin, y'a quand meme de la maitrise...

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    ben ça doit être pour ça que je suis passé à coté ... mais je ne vois toujours pas ce que cette page fait d'extraordinaire... je ne sais même pas ou chercher ...

    je clique sur un lien et la page se recharge... heu on en doit pas avoir la même notion d'extraordinaire ou cette page ne fonctionne pas chez moi ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre expérimenté Avatar de fred777888999
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 250
    Par défaut
    Rien d'extraordinaire en effect... Jette juste 1 oeil au code source et tu verra qu'elle transforme la balise "lien/adresse" en "a/href" je te laisse le soins de decouvrir comment...

  7. #7
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    oui, SF a même pas regardé la source, si ça se trouve

    et bravo à fred

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    ben si j'ai regardé le code source qui presse les datas et le torture... mais si je savais au moins ce que c'est supposé faire...
    parceque là c'est tellement bien caché que je ne sais même pas à quoi ça sert ...
    et donc je ne sais même pas quoi chercher ... ???
    replacer un lien par un href ??? reloader la page ... j'ai pas compris le truc du lien en fançais ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    arf faut déja avoir de bon yeux pour voir que JT est en tran d'essayer de code un interpréteur de html version française en javascript ....
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    oui bon ...
    Autant les deux premiers sont utiles, autant celui là je n'en voit vraiment pas l'utilité ... d'autant plus venant de toi JT qui me renvoie régulièrement dans mes 22 en arguant de l'utilité de mes découvertes ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  12. #12
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    mais non, mais non, t'as mal pris une plaisanterie il y a des lustres et tu me la ressers régulièrement! si je faisais des trucs utiles, ça se saurait;


    et puis je rappelle que ces ptits défis ne sont pas des tutoriels ou des faqs: c'est juste un entraînement à la lecture de scripts et forcément, tu ne pourras pas en faire grand chose dans la vie de tous les jours

  13. #13
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    bon alors la soluce demain après une bonne nuit hein;

  14. #14
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    soluce

    description: Une balise <lien></lien> dotée d'un attribut adresse semble inteprétée par le navigateur comme si de rien n'était.

    but du jeu
    Comment se fait-ce?

    quoi regarder?


    La feuille de style

    une première classe concerne par défaut tous les éléments de la page; elle est nécessaire car "lien" n'est pas reconnu par css et on ne peut lui attribuer une classe comme si de rien n'était; la mise en forme est celle d'un lien classique;
    la deuxième est nécessaire pour que les balises div et img présentes dans la page retrouvent une mise en forme anonyme (et surtout pas un curseur "pointeur";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <style style="text/css">
    body * {cursor:pointer;color:#0000ff;text-decoration:underline}
    div,img {cursor:default;text-decoration:none;font-weight:bold;color:#000000}
    </style>
    le html

    L'essentiel est ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <span><lien adresse="http://javatwist.imingo.net/defi3.htm">Ce lien est certifié 100% français.</lien></span>
    la balise <lien> est enveloppée dans une vraie balise <span>: c'est cette dernière qui servira, en douce, de gestionnaire d'événement (onmouseover / out pour l'infobulle "title" et le message "status"; onclick pour l'activation du lien);

    la balise suivante n'a qu'un intérêt psychologique: elle justifie plus ou moins la présence d'une chaîne longue dans le script en affichant sa valeur au chargement de la page; le but est que le descripteur novice ne s'intéresse pas immédiatement au rapport entre cette chaîne et le lien;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div style="padding-bottom:200px;padding-top:200px;float:left">...</div>
    Le script

    Un premier script factice, qui n'est pas interprété puisque sa propriété "javscript" n'est reconnu par aucun navigateur...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <script type="text/javscript "> 
    *******************************************
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!IMPORTANT ! IMPORTANT ! IMPORTANT!!!!!
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    *******************************************
             Javascript est polyglotte
    *******************************************
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!IMPORTANT ! IMPORTANT ! IMPORTANT!!!!!
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    var lang=true;
    with(document){
    tous les liens.lang="en français"}
    </script>
    La suite est 100% utile pour que le code fonctionne;
    Commençons par la définition des éléments html pour javascript:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var lien=document.getElementsByTagName("lien")[0];// la balise "<lien>"
    var adresse=lien.getAttribute("adresse");// la valeur de l'attribut "adresse" de cette balise
    lien=lien.parentNode;// redéfinition de la valeur de lien, qui désigne maintenant la balise "<span>"
    Après, cherchons les appels de fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lien.onmouseout=function(){status=''};eval(oui+"="+yes);
    lien.onmouseover=function(){this.title=adresse;status=adresse}
    onmouseout et onmouseover se voient comme le nez au milieu de la figure et c'est tant mieux: ils ne servent qu'à la déco: donner des signes extérieurs de "lien normal" via les propriétés "title" et status"; par contre, ils cachent un peu un eval intéressant qui effectue tout le travail: oui et yes sont visiblement les variables à traquer.

    la variable oui

    oui est un pseudo tableau, qui correspond à une simple chaîne (malgré les nombreuses virgules, les guillemets n'apparaissent qu'au début et à la fin);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var oui=new Array("L',idée,est,nouvelle n'est-ce pas...,.,On,ne sera plus,complètement,largués si tu viens,ici pour nous aider,Clark,Kent.");
    q est une copie de oui sous forme d'une vraie chaîne: elle servira entre autres à compter les virgules après un split
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var q=oui[0].toString();
    oui est "splicée" de manière à ajouter en début de tableau chaque premier caractère suivant une virgule (plus le premier caractère de oui); oui devient donc un tableau digne de ce nom, dont les premières valeurs sont "K, C, i, l, c, n, O, ., n, e, i, L";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(i=0;i<q.split(',').length;i++){oui.splice(0,0,q.split(',')[i].replace(/(.).+$/g,'$1'))};
    On supprime alors le dernier élément du tableau, soit la chaîne initiale.
    On retourne le tableau, on le convertit en chaîne en minuscules et on obtient "lien.onclick"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oui=oui.reverse().join('').toLowerCase();
    la variable yes

    C'est en fait une fonction: on le comprend maintenant puisqu'elle est appelée par "lien.onclick=";
    Dans le code, cette fonction retourne une variable da interprétée par eval
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function yes(){eval(da)}
    da est une simple chaîne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var da="Dans les olives travaille Ernest Einstein .Ni les oiseaux ni ta soeur connaissent Ernest. L'est vieux...";
    La chaîne est transformée en tableau par match et un masque qui supprime simplement les espaces blancs: chaque élément du tableau contient donc un mot de la chaîne;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    da=da.match(/\S+\s\S+/g);
    Le tableau est reconverti en chaîne et on ne garde que les 2 premiers caractères de chaque portion comprise entre 2 virgules ("replace");
    On ne garde de la chaîne que les 15 premiers caractères: "DaolEr.NoitacoL";
    La chaîne est inversée et mise en minuscules grâce la méthode inv() déclarée en tête de script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String.prototype.inv=function(){
    return this.split('').reverse().join('').toLowerCase()+'()'};
    Bref, la dernière métamorphose est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    da=da.toString().replace(/(..)[^,]+,/g,'$1').substring(0,15).inv();
    On a donc: "da=location.reload()";

    La variable dcorrespond au contenu du <div> psychologique (rappelez-vous):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d=document.body.getElementsByTagName("*")[1];
    Cette balise prend le contenu de q (souvenez-vous), sans les virgules, sauf celle - logique - qui précède "Clark Kent".



    La vache! c'est plus facile à faire qu'à expliquer

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Défi : Déduire des liens familiaux !
    Par Ggamer dans le forum Général Python
    Réponses: 3
    Dernier message: 12/03/2010, 15h16
  2. [SandCastle] Liens vers la MSDN + Français
    Par NicoV dans le forum Visual Studio
    Réponses: 2
    Dernier message: 28/11/2008, 16h38
  3. Tutoriels et liens pour le Borland Database Engine
    Par Community Management dans le forum Paradox
    Réponses: 0
    Dernier message: 25/03/2002, 10h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo