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] IE supprime les "\n " avec innerHTML


Sujet :

JavaScript

  1. #21
    Futur Membre du Club
    Inscrit en
    Novembre 2003
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Visiblement tous les exemples qui marchent sous IE6 doivent avoir le formatage d'affiché (avec la balise PRE ou le Css correspondant) dans le "noeud" original.

    Dès qu'on ne veut pas voir formatage dans le "noeud" original, IE6 semble le supprimer purement et simplement et toutes les méthodes de copie du contenu (via innerHTML, la fonction copyNode de matthieu(qui utilise le DOM pour la copie), ou autre) ne font pas revenir les \n


    J'ai bien peur de devoir annoncer a mes utilisateurs d'IE6 qu'ils n'auront pas les retours a la ligne dans le div ....

  2. #22
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    tu peux ... sinon utilise la méthode un peux barbare : tu récupères la méthode que j'avais donnée qui affichait les <pre></pre> et tu les supprimes avec un petit morceaux de code

  3. #23
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    Citation Envoyé par jld33 Voir le message
    Visiblement tous les exemples qui marchent sous IE6 doivent avoir le formatage d'affiché (avec la balise PRE ou le Css correspondant) dans le "noeud" original.

    Dès qu'on ne veut pas voir formatage dans le "noeud" original, IE6 semble le supprimer purement et simplement et toutes les méthodes de copie du contenu (via innerHTML, la fonction copyNode de matthieu(qui utilise le DOM pour la copie), ou autre) ne font pas revenir les \n


    J'ai bien peur de devoir annoncer a mes utilisateurs d'IE6 qu'ils n'auront pas les retours a la ligne dans le div ....
    <td>ici<span>&nbsp;test1
    Test 2 apres retour a la ligne</span>
    </td>
    si ta souris est sur ici cela devrait marcher! (ou bien viser entre les lignes...)

  4. #24
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    effectivement la solution avec le hover sur la célulle est surement la meilleur solution ...
    mais moi je ferais autrement :
    un span avec comme style : position:absolute;top:0px;left:0px par rapport a mon td, et sur le hover du td( ou du span je passerais le formatage en pre ... ( via le css /!\ )

  5. #25
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Pourquoi pas faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <pre id="data" style="display: none">Line 1
    Line 2</pre>
    <span id="display"></span><script><!--
       $('display').innerHTML=$('data').firstChild.data.split('\n').join('<br/>');
    --></script>

  6. #26
    Futur Membre du Club
    Inscrit en
    Novembre 2003
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Désolé de cette réponse si tardive, je viens de me rendre compte que je n'avais pas mis de tag résolu ni remercié ceux qui avaient pris le temps de m'aider.

    Après moults essais, IE 6 supprime bien purement et simplement les /n si on ne lui demande pas de formater (par la balise <PRE> ou avec le Css correspondant).
    J'ai essayé diverses méthode (celle de modifier sur hover, celle proposée par FremyCompany, un mix des diverses approches etc.. Rien de bien concluant au final.
    Celle la plus concluant étant proche de celle de FremyCompany à base de span formatté et hidden, suivi d'un span non formaté et visible et, sur hover du span non formaté, j'affichais en popup la copie du innerhtml du span hidden.
    Malheureusement, j'ai en entete de colonne un script qui permet de filtrer sur les données, et celui ci affichait du coup les données en double

    Voici donc la solution mise en place :
    Ce n'est pas forcement la plus élégante mais elle marche et à un rendu visuel correct:

    en ASP (mais ça pourrait être en Php aussi), un replace des "/n" par "&nbsp;&nbsp;--&nbsp;&nbsp;" (si on veut doubler comme ici les espaces bien mettre les &nbsp; et pas de simples espaces sinon Ie supprime le 2eme espace dans le innerhtml et on retrouve le même pb qu'avec les "/n")

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.write( Replace(monrecordset(macolonne).Value,vbcrlf, "&nbsp;&nbsp;--&nbsp;&nbsp;"))
    en javascript sur le mouseover du <td>
    on remplace la chaine "&nbsp;&nbsp;--&nbsp;&nbsp;" par un <BR/>
    (utilisant prototype, j'ai utilisé gsub pour remplacer TOUTES les occurences dans ma chaine et pas seulement la première)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elt_div.innerHTML=elt_td.innerHTML.gsub('&nbsp;&nbsp;--&nbsp;&nbsp;','<BR/>')

    voila, c'est encore une fois pas super beau ( coté code car à l'affichage ça reste assez lisible) mais ça évite des usines à gaz et répond au besoin.

    Encore merci à ceux qui ont pris de leur temps pour m'aider à trouver une solution à ce problème.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/09/2007, 12h32

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