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 :

Codage de liens (je ne parle pas d'encodage)


Sujet :

JavaScript

  1. #1
    Membre averti
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Mars 2021
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Mars 2021
    Messages : 27
    Par défaut Codage de liens (je ne parle pas d'encodage)
    bonjour à tous,
    fier d'avoir fini mon premier gros travail en JS, je me heurte à un truc vraiment bête en terme de codage dans une fonction (je ne mets pas tout le script)
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
      function nodeToString(node) {
      ext = node.innerHTML.split('.').pop();
     
      //alert(node.innerHTML +" - "+ node.nodeType + "-" + node.innerHTML.substring(node.innerHTML.indexOf(".")+1));
      //A FINIR : si node.innerHTML.split('.').pop() est PDF, alors hyperlien !
     
       if ((node.nodeType == 2)){
    		node.innerHTML;
     
       }
     
     /*   if (node.nodeType == 2)
     return node.value;*/	
     
        if (node.nodeType == 3)
          return node.wholeText;
        if (node.nodeType == 8)
          return "<!--" + node.textContent + "-->";
     
    	//Je texte l'extension. SI c'est un PDF, je mets l'hyperlien
    	ext = node.innerHTML.split('.').pop().toLowerCase();//retourne TJS l'ex en minuscules !	
    	if (ext=='pdf')
    	{
    			return '<a href="'+node.innerHTML+'" target="_blank" class="lien-vers-PDF">'+node.innerHTML+'</a>';
    			//return node.innerHTML;
    	}
    	else
    	{
    		return node.innerHTML;
    	}
     
      }
    sur le ligne 24 dont le code est

    return '<a href="'+node.innerHTML+'" target="_blank" class="lien-vers-PDF">'+node.innerHTML+'</a>';
    le contenu du retour n'interprète pas le HTML retourné. J'ai bien tenté de faire un eval mais marche pas. Cette maniere de faire marche en PHP (je suis + codeur PHP que JS) mais là j'ai pas le choix
    Nom : firefox_yMcTXmQfsV.jpg
Affichages : 115
Taille : 104,6 Ko
    le code dans le browser est
    Nom : firefox_H1Z6VDmq4O.jpg
Affichages : 80
Taille : 24,7 Ko
    Pourriez vous me guider pour faire interpréter ce lien hypertext (c'est le coeur du pprojet d'un point de vue utilisateur !)comme un lien de télécharghement ?

    Merci

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 602
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 602
    Par défaut
    la fonction nodeToString crée juste une chaine de caractère. montrez nous le code qui utilise cette chaine.

  3. #3
    Membre averti
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Mars 2021
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Mars 2021
    Messages : 27
    Par défaut
    Cette fonction est utilisée ligne 9 du code suivant

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    function evalXPathUpdateResult() {
        var buffer = new Array();
     
        try {
          var nodes = evalXPath();
    	  //alert(nodes);
          var htmlNodes = $.map(nodes, function(node){
    		  // dans le cas ou c'est un lien, il faut mettre un tag <a>
            return $("<div>").text(nodeToString(node)).addClass("node");
          });
     
          $output.addClass('text-primary');
          $output.removeClass('text-danger');
          $output.html(htmlNodes)
          console.info('nodes', nodes);
        } catch (e) {
          $output.removeClass('text-primary');
          $output.addClass('text-danger');
          // TODO: show nicer error message
          $output.html("ERROR: " + e.message)
          console.error(e);
        }
      }
     
      $xpath.on('keyup', evalXPathUpdateResult);
      evalXPathUpdateResult();
    })
    N'étant pas un expert dans ce langage, j'ai adapté des éléments trouvés, je l'avoue;
    Un grand merci aux participants de cette aide

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 602
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 602
    Par défaut
    c'est la méthode .text qui échappe les caractères html. pour utiliser le code html directement, mettez .html.
    mais pour que ça fonctionne, vous devez être sur que la fonction nodeToString envoie toujours du code html valide. je pense surtout à la ligne avec "wholeText" et "nodeType == 3" dont je ne sais pas du tout à quoi ça correspond.

  5. #5
    Membre averti
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Mars 2021
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Mars 2021
    Messages : 27
    Par défaut
    j'aurais jamais pensé à ça. Ca peut donc dire que la classe, selon les méthodes utilisées var "formater" le format/la structure... retournée.
    Moi je me suis arrêté à ce que ça retournait un résultat.... bien que j'avais testé la méthode (là aussi d'ailleurs) et cela ne marchait pas au premier coup.... a cause du cache du navigateur. je n'y avais pas pensé.
    Merci beaucoup, je vais pouvoir continuer le projet

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

Discussions similaires

  1. [Firefox Vs IE] Liens locaux ne fonctionnent pas
    Par SkyDev dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 07/11/2006, 13h36
  2. [WebForms][2.0] Pourquoi mes liens ne sont-ils pas valides ?
    Par ben_popcorn dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 19/09/2006, 16h11
  3. Lien hypertext ne marche pas
    Par hamdounhicham dans le forum Web
    Réponses: 2
    Dernier message: 27/06/2006, 11h12
  4. [Mail] liens qui ne passent pas...
    Par tnntwister dans le forum Langage
    Réponses: 13
    Dernier message: 03/01/2006, 18h42

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