Fonction replace sur mots-cles dans le code HTML ?

Résolu
Lomendil Messages postés 17 Date d'inscription samedi 23 août 2003 Statut Membre Dernière intervention 21 mai 2008 - 27 mars 2007 à 16:45
cs_bmerklen Messages postés 3 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 15 avril 2007 - 15 avril 2007 à 02:19
Bonjour,

Je suis actuellement en train de construire un code afin de pouvoir traiter le code HTML d'une page et, eventuellement, de remplacer certaines occurences par d'autres. Par exemple, transformer "Hello World" par "Hello World" dans toute une page, ou seulement la première occurence de l'expression si possible.

Pour l'instant, je parviens à faire un "highlight" sur le mot désiré (merci window.find) mais ça ne va pas plus loin. Ma plus grande difficulté semble être de passer le HTML dans une variable pour être testée et traitée par javascript, puis retournée au navigateur.

Pour information, la liste des mots-clés à remplacer est dans un tableau (Array) et pour l'instant mon code parcourt chaque élément du tableau pour le trouver dans le texte. J'ai peur que ça devienne rapidement très lourd à gérer si le code est appliqué à toutes les pages d'un site ...

Je vous remercie de votre attention et attends avec impatience vos idées et réactions sur ce thème ! :-)

9 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
28 mars 2007 à 09:19
Bonjour,
    je pense qu'ici tu aurais un exemple...
<hr />


Cordialement        Bul     [mon Site]     [M'écrire]           




<hr />
3
Lomendil Messages postés 17 Date d'inscription samedi 23 août 2003 Statut Membre Dernière intervention 21 mai 2008
28 mars 2007 à 10:29
Source intéressante, mais pas pour le problème que j'ai actuellement. En effet, le travail se fait sur un textarea, fait pour être modifié donc, alors que je cherche à modifier le code HTML à la volée avant de le renvoyer au navigateur.

Je me demande finalement si JavaScript est un bon choix ? C'est peut-être plutot côté serveur que je vais devoir faire ça (PHP).
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
28 mars 2007 à 11:13
on peut utiliser le body.innerHTML   et, bien sûr, adapter le script donné en exemple
<hr />


Cordialement                Bul     [mon Site]     [M'écrire]                       




<hr />
3
Lomendil Messages postés 17 Date d'inscription samedi 23 août 2003 Statut Membre Dernière intervention 21 mai 2008
28 mars 2007 à 11:16
C'est justement ce que je cherchais !

Je venais d'ailleurs tout juste de le trouver dans une autre source, ici : http://www.javascriptfr.com/code.aspx?ID=39413

Je pense que j'ai tout ce qu'il me faut maintenant, merci !
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bmerklen Messages postés 3 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 15 avril 2007
13 avril 2007 à 19:01
Bonjour,

As tu réussi à compiler le code que tu cherchais ?
Car cela m'interresse aussi !

Merci
3
cs_bmerklen Messages postés 3 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 15 avril 2007
14 avril 2007 à 18:47
Merci bien !

Si je ne me trompe pas, ta variable n ne sert à rien..

De plus, ton script ne fais qu'un seul remplacement..
C'est pour quoi j'ai encadré ta fonction "txt = txt.replace.." par une boucle for de 20 tours..
3
Lomendil Messages postés 17 Date d'inscription samedi 23 août 2003 Statut Membre Dernière intervention 21 mai 2008
14 avril 2007 à 17:51
Heu compiler ? o_O

Enfin j'ai effectivement réussi à faire ce que je voulais. Voici le bout de code :

function AttacherInfosBulles(cible) {
if (!cible){cible = document.body;}
  //LISTE DES MOTS SUR LESQUELS LA BULLE SE PLACE AUTOMATIQUEMENT
  var MotsCles = Array("Mot1","Mot2","Mot3"), reg;
  //AUTRES VARIABLES
  var n = 0;
  var txt, i, found;
  //On boucle sur chaque mot clé du tableau
  for(i=0;i<MotsCles.length;i++) {
    txt = cible.innerHTML; //Récupération du contenu de l'élément
    reg = new RegExp(MotsCles[i],"")
    MotCle=MotsCles[i].replace(/ /g,"_");
    MotCle=noaccent(MotCle);
    txt = txt.replace(reg,""
    +MotsCles[i]+"")
    n++;
    cible.innerHTML = txt;
  }
}


Il faut ensuite mettre onload="AttacherInfosBulles(document.getElementById('id'))"
dans le

Sachant bien sûr qu'il y a le reste du code qui suit pour faire fonctionner tout ça. Si j'ai le temps que publierais la source.
0
Lomendil Messages postés 17 Date d'inscription samedi 23 août 2003 Statut Membre Dernière intervention 21 mai 2008
15 avril 2007 à 02:07
Oui en effet, ma variable n venait d'une version précédente du script, on peut donc l'enlever.

Par contre je ne vois pas bien ce que tu veux faire avec tes 20 tours ? Pourquoi 20 d'ailleurs ?

Ce script n'est pas idéal, il faudrait éviter qu'il boucle sur chaque mot clé pour être plus efficace, mais je n'ai pas trouvé comment faire autrement.
0
cs_bmerklen Messages postés 3 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 15 avril 2007
15 avril 2007 à 02:19
Le nombre 20 est aléatoire.. c'est juste pour tenir compte du fait qu'il peut y avoir plusieurs "Mot1" dans ta page..

Je n'ai pas non plus trouvé comment faire autrement..

De plus, il faut jouer avec les astuces pour que cela ne remplace pas le même mot en boucle..
0
Rejoignez-nous