为什么通过DOMParser创建的脚本元素不会执行?

16

我正在使用Ajax加载HTML,在使用DOMParser解析后,将文档主体的所有childNodes放入文档片段中。

当我将此片段添加到当前文档的主体中时,<script>标签不会被执行。

经过一番尝试,我发现:如果我用新创建的动态


@Nit,这完全不正确。动态添加的脚本肯定会被执行。我想知道为什么通过DOMParser对象动态创建的脚本不像使用document.createElement创建的那样被执行。 - plalx
值得注意的是,这段代码仅在您创建新的“片段”并将节点移动到该片段时才有效。如果您尝试直接将解析的节点附加到主文档中,无论是否使用“fix”方法,脚本都不会执行。 - Andrew Bullock
我找到了另一种执行脚本的方法——创建一个iframe,设置src,然后读取frame.contentDocument.body.innerHTML——但它只在有限的情况下有效(CORS)。https://stackoverflow.com/questions/8340324/loading-an-iframe-without-injecting-it-into-the-dom - undefined
1个回答

27
这在 DOM 解析和序列化 规范中有解释:

parseFromString

parseFromString(str,type) 方法必须根据类型执行以下步骤:


谢谢,我应该想到查看规格 ;) - plalx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接