7
votes

Travaux intérieurs de innerhtml

J'essayais de changer d'itétizotage de l'innerhtml d'un identifiant, comme: xxx

et xxx

mais j'ai trouvé que ça n'a pas fait 't nécessairement mettre mes tags en séquence.

Bien sûr, cette méthode est nulle et je viens de changer tout pour continuer à ajouter à une chaîne, que j'ignore à la fin de l'ID.

Ma question est la suivante:

Qu'est-ce que l'innerhtml est exactement dans les tags que je l'insère, est-ce déterministe, est-il spécifique à la courroi?


1 commentaires

Pls. donner un exemple spécifique. Quelles tags fait quel navigateur met dans quelle séquence?


5 Réponses :


1
votes

innerhtml ne fait rien, mais le navigateur est libre de changer de choses autour, mais elle aime. Vous pouvez voir cela se produire si vous ouvrez une page dans Firefox et ouvrez Firebug avec elle. Lorsque vous affichez votre HTML, vous trouverez peut-être que certains éléments ne sont même plus là.

L'action la plus surprenante de Firefox, à un nouveau venu, est de changer tout HTML sur ce qui semble être XHTML.

sur votre méthode, je ne pense pas que cela craint du tout. Je pense que c'est assez cool, en fait. Donc merci!

et avoir un uppot pour cela: -)


2 commentaires

La raison pour laquelle ce n'est pas une bonne méthode en dehors de la question que j'ai soulevée, c'est qu'il est plus lent que le navigateur de traiter, d'une attribution à l'innerhtml.


@Lance Roberts - Je vois. Eh bien, ça fait un sens parfait. Et bien sûr, lorsque vous calculez "plus lent", vous incluez le temps nécessaire pour obtenir l'innerhtml hors de l'élément et dans un var; En chattant les nouvelles choses - "
" dans votre exemple - sur la fin de ce var; et stocker le Var retour dans le HTML. Peut-il vraiment être vrai? Le navigateur est un vrai chien - un bowser - si oui.



1
votes

Bien que innerhtml soit non partie du W3C DOM, il est pris en charge par tous les navigateurs. À l'origine, il vient d'ajouter la chaîne as-it-is à votre élément. Tous les grands navigateurs modifient cependant votre chaîne et rendez la chaîne un balisage HTML valide. Ceci est un navigateur spécifique et non défini explicitement dans une norme officielle. J'aime la voie Mozilla explique les travaux de innerhtml.


1 commentaires

innerhtml est spécifié dans HTML5: w3.org/tr/2008/wd-html5-20080610/dom.html#innerhtml0



5
votes

Dans mon expérience la plupart du temps, un navigateur tente de corriger le HTML 1 avant de l'injecter dans le DOM. Si vous vouliez créer un

    de cette façon: xxx

    dans par exemple chrome qui aurait abouti à: xxx

    Ainsi, innerhtml peut donner des résultats imprévisibles, car chaque fois que vous l'utilisez, le code HTML est corrigé par le navigateur (et les navigateurs diffèrent de la manière dont ils le font aussi). Cela est particulièrement vrai pour les éléments de table / table (et encore plus particulièrement dans IE (MS inventé innerhtml au fait;)). Si vous souhaitez que votre HTML soit absolument la façon dont vous prévu, collez-vous à des méthodes DOM ( CreeEnment / Appendicateur etc.), ou première construction up une chaîne de l'élément complet que vous souhaitez insérer à l'aide d'InnerHTML, puis insérez-la, en d'autres termes, n'utilisez pas innerhtml avec des chaînes contenant HTML incomplètes.

    à compléter Je cite de Quirksmode de PPK :

    Si vous supprimez les éléments à travers innerhtml dans IE, leur contenu est essuyé et seul l'élément lui-même (c'est-à-dire des balises d'ouverture et de fermeture) rester. Si vous souhaitez supprimer des nœuds que vous voudrez peut-être réinsérer à un Plus tard, utilisez des méthodes DOM telles que Removechild ()

    1 plus technique: je pense que chaque navigateur applique son propre ALGORITHM .


1 commentaires

C'est vrai. Et y ajouter, le navigateur analyse innerhtml même si l'innerhtml appartient à un