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 :

innerHTML fait ce qu'il lui plait du code


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    217
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 217
    Par d�faut innerHTML fait ce qu'il lui plait du code
    Bonsoir,
    lorsque j'ex�cute le code suivant :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <html><head>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
     
    </head><body>
    <div id="file_1"></div>
     
    <script type="text/javascript">
    	document.getElementById('file_1').innerHTML = '</li><li>\n';
    </script>
     
    </body></html>
    sur firefox, j'obtiens celui-l� :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <html><head>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
     
    </head><body>
    <div id="file_1"><li>
    </li></div>
     
    <script type="text/javascript">
    	document.getElementById('file_1').innerHTML = '</li><li>\n';
    </script>
     
    </body></html>
    Il m'a donc all�grement chang� l'ordre des balises <li>, </li> et du retour chariot.
    Le comportement normal de innerHTML ne devrait-il pas �tre de copier la cha�ne dans le code html de la page, sans se pr�occuper du sens?
    Y a-t-il une fonction qui ne se pas toutes ces questions?

    Merci d'avance et bonne soir�e.

  2. #2
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    217
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 217
    Par d�faut
    En fait il faut que le code soit bien balis� pour que �a marche correctement. Il est peut-�tre possible de se d�brouiller avec innerText. Mais il semble que ces deux fonctions soient le mal.
    Je vais donc me d�brouiller avec le DOM, qui semble beaucoup plus propre.

  3. #3
    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 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    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 659
    Billets dans le blog
    1
    Par d�faut
    certains constructeurs de DOM ne cr�ent les balises que si ils trouvent balise fermante.
    Ainsi
    Ton "</li><li>" ne va cr�er qu'une balise li.

    Avec innerText, le code html ne sera pas interpr�t� mais ins�r� entant que texte simple, ainsi le code html sera visible.

    inneHTML et innerText ne sont pas le mal, pour innerHTML comme tu l'as d�couvert, ils doit avoir un code html correctement syntax� et il faut juste faire attention qu le code html soit int�gralement compris par le constructeur DOM.
    Pour le innerText il n'ins�re que du texte.

    Passer par le DOM permet en effet de s'assurer de la cr�ation int�grale de l'objet qui sera donc ensuite int�gralement reconnu avec toutes ses propri�t�s par le DOM.
    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 !

  4. #4
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    encore une fois le document HTML (DOM) n'est pas le code HTML qui sert � le g�n�rer.

    le DOM est le r�sultat de l'INTERPRETATION du source HTML.

    Il s'agit d'une INTERPRETATION. pas d'un copier coler ou quoi que se soit d'autre.

    ce n'est pas parce que dans le monde informatique on a mal traduit le mot anglais interpr�ter qu'il ne s'agita d'un INTERPRETE (et non un interpreteur).

    un interpr�te interpr�te. il essait donc de comprendre ce que dit la source pour produire une interpr�tation.

    J'esp�re avoir suffisament martel� le mot.

    donc dans le dom il n'y a pas de retour � la ligne de balise </li> ou <li> il n'y a que des Elements et des TextNodes
    le code HTML que l'on peut voir dans les d�buggueur et autre outils ne sont pas le code HTML du DOM
    c'est le r�sultat de la s�rialisation du DOM. Une s�rialisation est une repr�sentation sous forme de s�rie de code donnant une repr�sentation de l'objet s�rialis� permettant une traduction dans le sens inverse.

    Il s'agit donc d'une REPRESENTATION il ne s'agit pas du DOM. pour information le code HTML d'un DOM HTML5 est d�finit dans la norme comme la s�rialisation du DOM c'est le DOM qui est normalis� pas le code source HTML5

    encore une fois lorsque vous fournissez un code source HTML � un navigateur et que vous inspect� le DOM les opp�ration suivantes on lieu
    Chargement du code source par le navigateur (visible g�n�ralement dans "afficher la source" dans le navigateur)
    Interpretation du code
    Creation d'un DOM
    Serialisation du DOM en code HTML

    Chaque �tape et source d'erreur et d'approximation.
    une erreur dans le flux de la source peut l'int�rompre (le document sera partiellement charg�)
    une erreur dans le code source html peut donner lieu � une adaptation (le navigateur ajoute ce qui manque, retire ce qu'il a en trop, ou d�place un �l�ment) ou � une erreur (Syntax error)
    une erreur peut se produire lors de la creation d'un �l�ment (par exemple une erreur d'allocation memoire)
    une erreur peut sur venir � la serialisation le DOM (etant extensible) peut contenir des �l�ment non s�rialisables ils sont soit ignor�s soit provoque une erreur.

    et tout cela d�pends de la machine de l'os et du moteur de rendu du navigateur.

    il est facile de comprendre qu'avec tout �a ce qu'on met en entr�e n'a que peut de chance d'�tre exactement ce qu'on a en sortie.

    le moteur de rendu ne fait jamais ce qu'il VEUT il fait toujours ce qu'il PEUT.

    apr�s tout �a on peut ce dire quelle m#rd@ on peut pas travailler avec �a.

    je r�pondrais que si on s'obstine � �crire du code non conforme au B.A.BA. oui on ne peut pas travailler avec.
    mais si on respecte � minima les normes du DOM (pas du HTML) alors il n'y a aucun probl�me � travailler avec.

    j'ai bien dit du DOM as du HTML
    HTML accept
    Code html : S�lectionner tout - Visualiser dans une fen�tre � part
    <table><tr><td>1</td></tr></table>
    la norme W3C du DOM ne l'accepte pas le TBody est OBLIGATOIRE.
    donc si on ne veux pas d'embrouille avec les navigateur il sufit de le mettre syst�matiquement.


    Je dirais donc lisez la norme du DOM relisez la nore du DOM lisez la norme sur la s�rialisation du DOM Lisez la norme de base du XML et vous saurez coder proprement du HTML

    A+JYT

  5. #5
    Mod�rateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par d�faut
    De toute fa�on, c'est d�bile de vouloir fermer une balise avant de l'ouvrir, et je vois mal comment on peut esp�rer le faire avec le DOM. (J'admets qu'avec innerHTML, m�me si �a ne fait �videmment rien de coh�rent, au moins il �tait possible de l'�crire.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 3
    Dernier message: 24/10/2012, 15h02
  2. R�ponses: 1
    Dernier message: 29/09/2011, 08h16
  3. R�ponses: 2
    Dernier message: 24/04/2007, 20h04
  4. R�ponses: 8
    Dernier message: 22/12/2006, 10h17

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