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 :

[DOM] Split d'un innerHTML multilignes


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Avatar de Amnesiak
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    137
    D�tails du profil
    Informations personnelles :
    �ge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 137
    Par d�faut [DOM] Split d'un innerHTML multilignes
    Bonjour � tous,

    Supposons qu'une page contienne un �l�ment dont le texte s'�tale sur plusieurs lignes :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    <div id="demo">
    line1
    line2
    line3
    </div>
    Si je souhaite en extraire le contenu et le d�couper pour en s�parer chaque ligne, il m'a sembl� logique de faire tout simplement :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    <script type="text/javascript">
    var text = document.getElementById('demo').innerHTML;
    var split = text.split(/\r\n|\r|\n/);
    alert('Nombre de lignes:'+split.length);             
    </script>
    Le r�sultat est OK sous Firefox, Opera, Chrome et Safari. Par contre IE pose probl�me, dans le sens ou le split ne retourne qu'une seule ligne. Quelqu'un a-t-il une autre id�e pour r�aliser la d�coupe ?

    Merci d'avance !

  2. #2
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    salut
    remplace ton expression r�guli�re par

  3. #3
    Membre confirm�
    Avatar de Amnesiak
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    137
    D�tails du profil
    Informations personnelles :
    �ge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 137
    Par d�faut
    Salut,

    Merci pour ta r�ponse ! J'avais d�j� essay� cette possibilit�, mais j'ai oubli� de pr�ciser dans mon exemple ci-dessus que les lignes peuvent contenir des caract�res d'espacement, aussi bien que d'autres caract�res sp�ciaux... d�sol�

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    <div id="demo">
    line (1) ?
    line #2...
    line [3] !!
    </div>
    J'ai donc bien peur qu'il s'agisse plut�t d'un probl�me d'expression r�guli�re...
    Ne pourrait-on pas ajouter � ton expression une exception pour le caract�re "espace" et le "tab" ? Ca devrait faire l'affaire non ?

  4. #4
    Membre confirm�
    Avatar de Amnesiak
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    137
    D�tails du profil
    Informations personnelles :
    �ge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 137
    Par d�faut
    Apr�s de longues recherches, il semblerait qu'il ne s'agisse pas simplement d'un probl�me d'expression r�guli�re, mais plut�t d'une particularit� d'Internet Explorer dans la mani�re dont son parser DOM g�re les espaces et les retours � la ligne.

    J'ai eu beau tester diverses m�thodes d'acc�s aux donn�es, mais sans succ�s :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    text = document.getElementById('demo').element.childNodes[0].data; // acces DOM
    text = document.getElementById('demo').element.childNodes[0].nodeValue;
    text = $('demo').get('html'); // MooTools
    La seule alternative compatible multi-browsers que j'ai trouv�e consiste � englober mon <div> dans un �l�ment <pre>, de telle sorte que les espaces et retours chariot soient conserv�s. J'ai alors logiquement pens� reproduire cette situation dynamiquement via le DOM, mais malheureusement sans succ�s:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    var demo = document.getElementById('demo');
    var monPre = document.createElement('pre');
    demo.parentNode.appendChild(monPre);
    monPre.appendChild(demo);
    Ou m�me simuler le comportement d'un <pre> � l'aide des CSS... en vain.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    <div id="demo" style="white-space:pre;">
    Je me trouve d�s lors comme qui dirait en manque d'inspiration pour trouver une solution correcte et portable face � ce probl�me. Si quelqu'un a d�j� eu l'occasion de se pencher l�-dessus, toute id�e ou retour d'exp�rience seront les bienvenus !

    D'avance, un grand merci !

Discussions similaires

  1. [JavaScript] [SRC]HtmlXtDom Utiliser le DOM � la place de innerHTML
    Par sekaijin dans le forum Contribuez
    R�ponses: 4
    Dernier message: 02/11/2009, 18h09
  2. [DOM] Petit soucis avec innerHTML et ie
    Par dervish dans le forum G�n�ral JavaScript
    R�ponses: 8
    Dernier message: 21/11/2008, 20h17
  3. [DOM] innerHTML et <table>
    Par djayp dans le forum G�n�ral JavaScript
    R�ponses: 5
    Dernier message: 01/02/2008, 13h21
  4. [DOM] innerHTML value input firefox
    Par Teufboy dans le forum G�n�ral JavaScript
    R�ponses: 4
    Dernier message: 23/08/2007, 10h07
  5. [DOM] L'�quivalent de innerHtml existe-t-il sans parser ?
    Par zefrit dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 28/09/2005, 19h08

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