复制document.write行为

时间:2018-09-01 11:44:55

标签: javascript

在过去的两周里,我试图用自己的实现方式替换document.write,以便我可以加载一些异步使用它的第三方js。 我已经取得了一些进展,但是document.write可能非常复杂。 我正在使用“ DOMImplementation.createHTMLDocument()”创建一个空的html文档来解析初始html,然后我将节点附加到真实dom上,其中一些节点中有使用document.write的脚本标签。 。 首先,为了处理这些调用,我尝试再次解析该html并将其追加到启动该调用的script标签之后,但是这种情况下无法处理部分html,例如:

document.write("<di");document.write("v></div>";
document.write("<scri");document.write("pt src='example.com></script>");

我可以将所有html推送到缓冲区中,并在脚本完成后将其刷新,但我还需要处理更多类似的情况:

document.write("<div id='test1'></div>");document.getElementById("test1");

我的案子将不存在。

有什么想法如何可靠地处理document.write吗?

顺便说一句: Node.querySelectorAll("*");属性是否将按可靠地返回dom中相同的顺序返回节点?例如:

document.body.querySelectorAll("*"); -->
<body>
    <div id="test1">
        <div id="test2">
            <img id="img1">
        </div>
        <img id="img2">
    </div>
</body>>

将始终输出-> test1-> test2-> img1-> img2

1 个答案:

答案 0 :(得分:0)

我不太了解您的问题,但是我可以使用document.innerHTML来对document.write进行填充。

这是代码

document.innerHTML += text;