|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Inscription : février 2007 Messages : 483 ![]() |
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=_blankEuh... c'est possible ça ? |
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé Sénior
![]() ![]() Inscription : avril 2004 Messages : 4 795 ![]() |
bonsoir,
c'est possible avec des expressions régulières. Regarde si celle-ci te convient : Code javascript :
|
||
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Inscription : février 2007 Messages : 483 ![]() |
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 ? |
|
|
00
|
|
|
#4 | |
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 874 ![]() |
Citation:
Code :
document.body.innerHTML = document.body.innerHTML.replace(....); |
|
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Inscription : février 2007 Messages : 483 ![]() |
![]() 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 |
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 808 ![]() |
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 ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
|
|
00
|
|
|
#7 | |||||
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 874 ![]() |
Citation:
Code html :
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. --- enfin, une alternative, est de ne modifier que les éléments voulus, par exemple : Code :
|
|||||
|
|
10
|
|
|
#8 | ||
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 808 ![]() |
Sinon, une méthode un peu moins barbare (mais pas compatible IE<8) :
Code :
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
|
||
|
00
|
|
|
#9 | |
|
Membre régulier
![]() Inscription : février 2007 Messages : 483 ![]() |
Citation:
En fait c'est une histoire de film Flash qui s'ouvre en lecture dans une box. Ça marche bien mais c'est incompatible avec les smartphones. Le code qui ouvre le layer ne fait pas de fallback Flash->HTML5 quand nécessaire. Alors je me le bricole. Je retourne à mon document.write vs innerHTML |
|
|
|
00
|
|
|
#10 | |||
|
Expert Confirmé Sénior
![]() ![]() Inscription : avril 2004 Messages : 4 795 ![]() |
Citation:
![]() Citation:
Le mieux est de passer par les fonctions DOM. Citation:
)Mais comme l'a indiqué Bovino c'est une méthode barbare car le contenu d'une page HTML (balises + texte + style en ligne, etc) est énorme donc gourmand en mémoire. L'alternative que tu proposes est plus propre car tu ne cibles que quelques éléments de la page. |
|||
|
|
00
|
|
|
#11 | ||
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 874 ![]() |
Citation:
Citation:
|
||
|
|
00
|
|
|
#12 | ||
|
Expert Confirmé Sénior
![]() ![]() Inscription : avril 2004 Messages : 4 795 ![]() |
Citation:
![]() Citation:
|
||
|
|
00
|
|
|
#13 |
![]() ![]() Inscription : janvier 2011 Messages : 2 944 ![]() |
Bonjour à tous,
cela deviendrait-il la préoccupation du moment ???? http://www.developpez.net/forums/d11...elements-page/
|
|
|
00
|
|
|
#14 | |
|
Expert Confirmé Sénior
![]() ![]() Inscription : avril 2004 Messages : 4 795 ![]() |
Citation:
|
|
|
|
00
|
|
|
#15 | ||
|
Membre régulier
![]() Inscription : février 2007 Messages : 483 ![]() |
Bon j'ai remonté mes manches avec vos infos précieuses... mais je bute encore...
En route les choses se sont précisées et je cherche à modifier tous les liens de la page qui ont l'extension .mp4 en insérant devant un début d'URL : Code :
Qu'est-ce que j'ai mal fait ? |
||
|
|
00
|
|
|
#16 |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 808 ![]() |
Code :
var reg = new RegExp('^(href=").*(.mp4)$','gi');
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
|
|
00
|
|
|
#17 |
|
Membre régulier
![]() Inscription : février 2007 Messages : 483 ![]() |
|
|
|
00
|
|
|
#18 |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 808 ![]() |
Dans ton expression régulière :
Code :
var reg = new RegExp('^(href=").*(.mp4)$','gi'); Or, cette expression régulière, tu l'appliques à c'est à dire au contenu de l'attribut href de ton lien ! Tu recherches donc un lien qui serait écrit comme ça : Code html :
<a href='href="www.toto.fr'>Lien</a>
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
|
|
10
|
|
|
#19 |
|
Membre régulier
![]() Inscription : février 2007 Messages : 483 ![]() |
Oui là j'ai bien compris !
![]() Mais je n'arrive toujours pas à trouver comment faire passer ça. J'ai essayé : tout en gardant la même expression régulière. Mais ça ne va pas non plus… Il y a d'autres erreurs dans mon code ? |
|
|
00
|
|
|
#20 |
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 874 ![]() |
Je suis nul en RegExp, donc ma réponse est à prendre avec des pincettes.
Mais tu dois faire l'inverse : retirer le "href" de l'expression régulière : du genre : car "lien[i]" ne renvoit pas un "string" mais un objet. |
|
|
10
|
Copyright © 2000-2012 - www.developpez.com