據我所知,HTML輸入是字節流,並且document.write()
可以通過插入新字節來改變流。例如。什麼因素可以改變HTML輸入字節流?
document.write("<p> an example </p>");
而且HTML5規範的parsing model只能說明document.write()
可以更改HTML輸入,但它並沒有說這是唯一的因素。
是否有其他因素改變HTML輸入?
據我所知,HTML輸入是字節流,並且document.write()
可以通過插入新字節來改變流。例如。什麼因素可以改變HTML輸入字節流?
document.write("<p> an example </p>");
而且HTML5規範的parsing model只能說明document.write()
可以更改HTML輸入,但它並沒有說這是唯一的因素。
是否有其他因素改變HTML輸入?
如果您看他們的樹模型旁邊他們指出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.
有document.writeln爲好,但僅此而已。
編號DOM操作對解析器輸入沒有影響。 – Bergi
@Bergi,我不認爲你的錯,但怎麼可能呢?我的意思是,如果您在頁面中創建或插入某些東西,是否不必像原始流一樣通過瀏覽器的html解析器進行解析?正如我的回答表明,我認爲它總是以不同的方式工作,所以我想知道如果我的想法有誤,會發生什麼情況。 – Ryan
不,它被解析一次,然後你只有* Document ** Object ** Model *和它的樹形結構。有可能將DOM序列化回HTML字符串,但它不會相同(不同的字符實體,更正的分析錯誤等)。有時解析器需要再次用於'innerHTML'等,但原始的HTML字符串已被遺忘。 – Bergi