2012-12-11 21 views
1

據我所知,HTML輸入是字節流,並且document.write()可以通過插入新字節來改變流。例如。什麼因素可以改變HTML輸入字節流?

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

而且HTML5規範的parsing model只能說明document.write()可以更改HTML輸入,但它並沒有說這是唯一的因素。

是否有其他因素改變HTML輸入?

回答

0

如果您看他們的樹模型旁邊他們指出document.write()它顯示腳本執行是在實際的樹創建之外處理。這意味着,我相信,任何操縱dom的腳本都將放置在與document.write()相同的位置。

這將包括但不限於:

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

編號DOM操作對解析器輸入沒有影響。 – Bergi

+0

@Bergi,我不認爲你的錯,但怎麼可能呢?我的意思是,如果您在頁面中創建或插入某些東西,是否不必像原始流一樣通過瀏覽器的html解析器進行解析?正如我的回答表明,我認爲它總是以不同的方式工作,所以我想知道如果我的想法有誤,會發生什麼情況。 – Ryan

+0

不,它被解析一次,然後你只有* Document ** Object ** Model *和它的樹形結構。有可能將DOM序列化回HTML字符串,但它不會相同(不同的字符實體,更正的分析錯誤等)。有時解析器需要再次用於'innerHTML'等,但原始的HTML字符串已被遺忘。 – Bergi

相關問題