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 :

Rechercher et remplacer code à la volée ?


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut Rechercher et remplacer code à la volée ?
    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 ?

  2. #2
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    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

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut
    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 ?

  4. #4
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    Citation Envoyé par Mister Paul Voir le message
    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(....);

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut


    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

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    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 JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    Citation Envoyé par Mister Paul Voir le message


    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
    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';
            }
        }
    }

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 23/01/2008, 20h45
  2. Problème code de la fonction Rechercher et Remplacer
    Par LaPanic dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/06/2007, 17h10
  3. Réponses: 4
    Dernier message: 13/10/2005, 14h44
  4. [TP] Recherche d'un code source taquin à 9 cases
    Par dericthebeast dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 03/08/2005, 18h34
  5. Réponses: 11
    Dernier message: 01/12/2004, 19h09

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