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 :

regExp pour de l'italique, soucis IE / FF


Sujet :

JavaScript

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 202
    Points : 215
    Points
    215
    Par défaut regExp pour de l'italique, soucis IE / FF
    Bonjour,

    je suis une grosse larve avec les expressions régulières.
    j'essaye de surligner certains mots dans un texte à l'aide d'expressions régulières en évitant de sélectionner le mot s'il est dans un tag HTML (texte présent dans une DIV nommée).
    je me heurte à de gros soucis car FF et IE ne se comportent pas de la même façon (une même pattern ne donne pas du tout la même chose).
    j'ai donc un script qui
    1/ regarde si on est sous IE ou non
    2/ applique les expressions régulières qui vont bien (mot entier seulement, toutes les occurences, pas dans un tag HTML)

    je ne m'en sors pas !!!!

    merci de vos lumières
    Nicolas.
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    // ajout de l'italique pour navigateurs IE
    function AddItalicIE(pElementID, pKeyword){
      var pOrigine = document.getElementById(pElementID).innerHTML; 
      var pNew = "";
      var pRegExpKeyword = "(" + pKeyword + ")";              // toute occurence du mot clef (OK IE + FF)
      var pRegExpFullKeyword = "(\b" + pKeyword + "\b)";          // isole les mots entiers seulement (1 fois sous FF, rien IE)
      var pRegExpLink = "(<a[^>]*>(" + pKeyword + ")</a>)";        // dans les liens seuls (OK IE, pas FF)
      var pRegExpNoTag = "([^\<]*)(\b" + pKeyword + "\b)([^\>]*)";    // les occurences en dehors des balises ???
      var reg= RegExp(pRegExpKeyword+"|"+pRegExpLink, "gi");
      var RegTab = pOrigine.split(reg);
      for(i=0; i<RegTab.length; i++){
        if(i != RegTab.length-1){
          // pas le dernier élément du tableau, on ajoute l'italique avec le mot-clef
          pNew += RegTab[i] + '<i>'+pKeyword+'</i>';
        } else {
          // dernier élément du tableau, on n'ajoute pas l'italique avec le mot-clef
          pNew += RegTab[i];
        }
      }
      document.getElementById(pElementID).innerHTML = pNew;
    }
    // ajout de l'italique pour navigateurs non IE
    function AddItalicFF(pElementID, pKeyword){
      var pOrigine = document.getElementById(pElementID).innerHTML; 
      var pNew = "";
      var pRegExpKeyword = "(" + pKeyword + ")";              // toute occurence du mot clef (OK IE + FF)
      var pRegExpFullKeyword = "(\b" + pKeyword + "\b)";          // isole les mots entiers seulement (1 fois sous FF, rien IE)
      var pRegExpLink = "(<a[^>]*>(" + pKeyword + ")</a>)";        // dans les liens seuls (OK IE, pas FF)
      var pRegExpNoTag = "([^\<]*)(\b" + pKeyword + "\b)([^\>]*)";    // les occurences en dehors des balises ???
      var reg= RegExp(pRegExpKeyword+"|"+pRegExpLink, "gi");
      var RegTab = pOrigine.split(reg);
      for(i=0; i<RegTab.length; i++){
        pNew += RegTab[i].replace(pKeyword, '<i>'+pKeyword+'</i>');
      }
      document.getElementById(pElementID).innerHTML = pNew;
    }
    // ajout de l'italique
    function AddItalic(pElementID, pKeyword, pLinkHTMLBody){
      if( (navigator.userAgent.toLowerCase().indexOf('msie') + 1)){
        AddItalicIE(pElementID, pKeyword);
      } else {
        AddItalicFF(pElementID, pKeyword);
      }
    }
    Nico, l'agrotic géomatic

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    j'ai déjà donné une reg Exp pour les mots entre tags HTML ...
    une recherche s'impose
    il faut faire un pattern qui donne le même resultat

    quel est le pattern qui pose souci ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 202
    Points : 215
    Points
    215
    Par défaut
    salut SpaceFrog,

    je sais que tu as donné ce genre de RegExp.
    c'est justement ce que je ne veux pas. je veux des mots en dehors des tag. et je veux coupler cette recherche à des mots entiers, et toutes occurrences.
    de plus, je souhaite une regExp qui fonctionne sous IE et FF ou alors 2 regExp, 1 pour IE, 1 pour FF

    j'ai déjà pas mal cherché...
    Nico, l'agrotic géomatic

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 202
    Points : 215
    Points
    215
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    j'ai déjà donné une reg Exp pour les mots entre tags HTML ...
    une recherche s'impose
    il faut faire un pattern qui donne le même resultat

    quel est le pattern qui pose souci ?
    pRegExpFullKeyword = "(\b" + pKeyword + "\b)"; m'ennuie (cf commentaire du code fourni)
    pRegExpLink = "(<a[^>]*>(" + pKeyword + ")</a>)"; m'ennuie aussi
    et je ne sais pas faire la combinaison "pRegExpFullKeyword et pas pRegExpLink "
    Nico, l'agrotic géomatic

Discussions similaires

  1. Une regexp pour des méthodes C++
    Par GLDavid dans le forum Langage
    Réponses: 6
    Dernier message: 17/01/2007, 13h48
  2. Regexp pour num. telephone 00 00 00 00 00
    Par metatron dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/09/2006, 13h50
  3. Regexp pour supprimer plein de blancs
    Par Petitcodeur dans le forum Langage
    Réponses: 6
    Dernier message: 09/08/2006, 15h01
  4. RegExp pour vérifier un chiffre à 2 décimales
    Par RobertDeNiroZ dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/05/2005, 18h07
  5. regexp pour email
    Par noinneh dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 28/12/2004, 11h11

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