在过去的两周里,我试图用自己的实现方式替换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
答案 0 :(得分:0)
我不太了解您的问题,但是我可以使用document.innerHTML来对document.write进行填充。
这是代码
document.innerHTML += text;