Javascript 在文档节点(包括子节点)上循环

Javascript 在文档节点(包括子节点)上循环,javascript,html,dom,document.write,Javascript,Html,Dom,Document.write,我试图在包含广告的iframe中替换“document.write”。 我目前正在通过“DOMParser”解析html字符串,我得到一个dom文档作为回报,我想在这个文档上循环,并将每个节点和所有子节点插入到真正的iframe dom中。 但我遇到了两个问题: 1.如果原始document.write中的字符串不包含,则“DOMParser”api仍会添加它们。 2.我可以像这样在所有节点上循环: ParsedHtml.querySelectorAll("*").forEach(functio

我试图在包含广告的iframe中替换“document.write”。 我目前正在通过“DOMParser”解析html字符串,我得到一个dom文档作为回报,我想在这个文档上循环,并将每个节点和所有子节点插入到真正的iframe dom中。 但我遇到了两个问题: 1.如果原始document.write中的字符串不包含
,则“DOMParser”api仍会添加它们。 2.我可以像这样在所有节点上循环:

ParsedHtml.querySelectorAll("*").forEach(function(node) {
但是我将在第一次迭代中使用
节点,所有节点都是子节点,并且再次使用
节点和所有子节点,当迭代继续时,我将再次使用相同的节点。 因此,我真正喜欢做的是解析document.write中的字符串,并开始以正确的顺序将一个又一个节点(包括所有子节点)直接插入到iframe dom中(头先插入主体…) 谢谢

代码示例:

var RealDocumentWrite = document.write;
document.write = function(str){
//call our parser here instead of using document.write
}
//our parser:
function Parser(str){
var parser = new DOMParser();
ParsedHtml = parser.parseFromString(str, "text/html");
ParsedHtml.querySelectorAll("*").forEach(function(node) {
//in this for loop the problems that i specified above occur
}
执行示例: 如果我们的投入是:

var samplehtml = '<html><head><script>console.log(1);</script></head><body><div id="111"></div></body></html>'

也许你只想选择头*,体*?(或<代码>头> *,身体> */<代码,取决于细节。有两种情况需要考虑,头部和身体,我可以dooPaStHML.Head和PaSeHTML.BooT,但是当我循环它们时,我不能得到一些有孩子的节点的孩子。这非常模糊。请出示一个能清楚说明您的问题所在和具体位置的说明。@CBroe我已经编辑了代码,谢谢,现在还不清楚问题所在。请创建一个实际的例子,包括测试数据,并描述它到底在哪里出错以及如何出错。
 ParsedHtml.querySelectorAll("head > *").forEach(function(node) {
        IframeDoc.head.appendChild(node);
    });

    ParsedHtml.querySelectorAll("body > *").forEach(function(node) {
        IframeDoc.body.appendChild(node);
    });