Bonjour,
je souhaiterais remplacer à la volée certains contenus d'une page html.
Par exemple concrètement :
Remplacer toutes les chaînes qui commencent par :
rel="et qui finissent par :
]"par ce contenu :
target=_blank
Euh... c'est possible ça ?
![]()
Bonjour,
je souhaiterais remplacer à la volée certains contenus d'une page html.
Par exemple concrètement :
Remplacer toutes les chaînes qui commencent par :
rel="et qui finissent par :
]"par ce contenu :
target=_blank
Euh... c'est possible ça ?
![]()
bonsoir,
c'est possible avec des expressions régulières.
Regarde si celle-ci te convient :
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 var reg = new RegExp("^(rel=).*(])$","gi"); var texte1 = "rel=coucou tout le monde]"; var texte2 = "coucou rel=tout] le monde"; var texte3 = "coucou tout le monde"; var texte4 = "coucou tout le monde]"; alert(texte1.replace(reg, "target=_blank")); //target=_blank" alert(texte2.replace(reg, "target=_blank")); //inchangée alert(texte3.replace(reg, "target=_blank")); //inchangée alert(texte4.replace(reg, "target=_blank")); //inchangée
Oh… joli !
Et c'est possible de changer le code html d'une page statique à la volée lors de son ouverture ?
Il y a une fonction qui fait ce rechercher / remplacer ?
A la barbare :
Code : Sélectionner tout - Visualiser dans une fenêtre à part document.body.innerHTML = document.body.innerHTML.replace(....);
Pourquoi barbare ? Ça me paraît surtout très puissant !
On peut aussi l'utiliser pour directement insérer du code (sans en remplacer) ?
Moi j'utilisais un document.write
Moi la question que je me pose, c'est surtout pourquoi tu mets des attributs rel si tu veux des attributs target ?![]()
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum
document.write ne peut s'utiliser que quand le document est encore en cours d'écriture du genre :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <body> debut <script>document.write('milieu');</script> fin </body>
il ne peut donc pas s'utiliser en dehors du body et ne peut non plus pas être appelé après le chargement de la page. (exemple une fonction différée par un évènement ou un timer)
---
le body.innerHTML remplace tout le code HTML de la page, j'en déduis donc (je me trompe p-ê... si qqn peut confirmer ou infirmer?) que si tu l'utilises, il va remplacer tout le code par un code quasi identique et que toute la page sera réévaluée. (au niveau du DOM). C'est pourquoi je pense que ce n'est pas la meilleure solution même si en pratique ça fonctionne bien si on ne doit l'utiliser qu'une fois par page.
oui, tu peux l'utiliser pour ajouter du code, par exemple si tu as un body vide et que tu construis la page dynamiquement.
---
Code : Sélectionner tout - Visualiser dans une fenêtre à part document.body.innerHTML += content;
enfin, une alternative, est de ne modifier que les éléments voulus, par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 var rel, i, liens = document.getElementsByTagName('a'); for(i=0;i<liens.length;i++){ if(rel = liens[i].getAttribute('rel')){ if(rel.length > 0 && rel.charAt(rel.length-1)==']'){ liens[i].target='_blank'; } } }
Partager