2012-12-11 3 views
1

Comme je sais, l'entrée HTML est un flux d'octets, et document.write() peut changer le flux en insérant de nouveaux octets. Par exemple.Quels facteurs peuvent modifier le flux d'octets d'entrée HTML?

document.write("<p> an example </p>"); 

également la seule spécification HTML5 parsing model de document.write() indiquent peut changer l'entrée HTML, mais il ne dit pas que c'est le seul facteur.

Y a-t-il d'autres facteurs modifiant l'entrée HTML?

Répondre

0

Si vous regardez leur modèle Tree à côté de l'endroit où ils pointent document.write(), cela montre que l'exécution du script est gérée en dehors de la création de l'arborescence réelle. Cela signifie, je crois, que tout script qui manipule le dom serait placé au même endroit que document.write().

Ceux-ci comprennent, sans s'y limiter:

el.innerHTML = ''; 
el.innerText = ''; 
el.style = ''; 
el.insertBefore = ''; 
el.insertAfter = ''; 
el.createDocumentFragment; 
el.appendChild(); 
el.removeChild(); //note this is the only supported way of removing from the html bit stream 
document.write(); 
//and anything else that changes either the html, css or even other scripts in the 
//document. 
+1

Non La manipulation DOM n'a aucun effet sur l'entrée de l'analyseur. – Bergi

+0

@ Bergi, je ne pense pas que votre tort, mais comment cela peut-il être? Je veux dire que si vous créez ou insérez quelque chose dans votre page, ne doit-il pas être analysé par l'analyseur html du navigateur tout comme le flux original? Comme ma réponse le montre, je pensais que ça fonctionnait toujours différemment, alors j'aimerais savoir ce qui se passe si mon idée est erronée. – Ryan

+0

Non, il est analysé une fois et vous n'avez que le * Document ** Object ** Model * avec sa structure arborescente. Il pourrait être possible de sérialiser le DOM en une chaîne HTML, mais ce ne sera pas le même (différentes entités de caractères, erreurs d'analyse corrigées, etc.); et parfois l'analyseur est nécessaire à nouveau pour innerHTML ou autre, mais la chaîne HTML d'origine aura été oubliée. – Bergi

Questions connexes