Javascript 什么因素可以改变HTML输入字节流?

Javascript 什么因素可以改变HTML输入字节流?,javascript,html,dhtml,document.write,Javascript,Html,Dhtml,Document.write,据我所知,HTML输入是字节流,document.write()可以通过插入新字节来更改流。例如 document.write("<p> an example </p>"); 文档。写一个例子(); 另外,HTML5规范的定义只表明document.write()可以更改HTML输入,但它并没有说这是唯一的因素 是否还有其他因素会改变HTML输入?如果您查看它们指向document.write()的位置旁边的树模型,就会发现脚本执行是在实际树创建之外处理的。这意味着,

据我所知,HTML输入是字节流,
document.write()
可以通过插入新字节来更改流。例如

document.write("<p> an example </p>");
文档。写一个例子();
另外,HTML5规范的定义只表明
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.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.

也有,但仅此而已。

也有,但仅此而已。

@Bergi,我不认为你错了,但这怎么可能?我的意思是,如果你在你的页面中创建或插入了一些东西,难道它不需要像原始流一样被浏览器的html解析器解析吗?正如我的回答所显示的,我认为它的工作方式总是不同的,所以我想知道如果我的想法是错误的,会发生什么。不,它被解析一次,然后您只有具有树结构的文档对象模型。可以将DOM序列化回HTML字符串,但它不会相同(不同的字符实体、更正的解析错误等);有时,
innerHTML
或类似的东西需要解析器,但原始HTML字符串将被遗忘。@Bergi那么他链接到的树是如何工作的呢?我的意思是
document.write()
仍然需要等待dom加载,因此如果您在
document.ready上插入或从dom中删除了上述任何调用,它们不会像
document.write()
一样插入到
输入流预处理器中吗?不会。
document.write
在解析过程中发生,
DOMready
事件说“解析就绪,现在可以通过DOM访问整个页面”@Bergi,我不认为你错了,但这怎么可能呢?我的意思是,如果你在你的页面中创建或插入了一些东西,难道它不需要像原始流一样被浏览器的html解析器解析吗?正如我的回答所显示的,我认为它的工作方式总是不同的,所以我想知道如果我的想法是错误的,会发生什么。不,它被解析一次,然后您只有具有树结构的文档对象模型。可以将DOM序列化回HTML字符串,但它不会相同(不同的字符实体、更正的解析错误等);有时,
innerHTML
或类似的东西需要解析器,但原始HTML字符串将被遗忘。@Bergi那么他链接到的树是如何工作的呢?我的意思是
document.write()
仍然需要等待dom加载,因此如果您在
document.ready上插入或从dom中删除了上述任何调用,它们不会像
document.write()
一样插入到
输入流预处理器中吗?不会。
document.write
在解析过程中发生,
DOMready
事件显示“解析就绪,现在可以通过DOM访问整个页面”