我正在使用 $.get()
从远程服务器检索 HTML 片段并将该片段插入到 DOM 中。该代码片段包含几个基本 HTML 元素和一个脚本元素。所有基本元素都会被插入,但脚本元素不会。
示例片段:
<p>This is a paragraph</p>
<script type="text/javascript">
// JavaScript that will work with the HTML in the snippet
</script>
我通过查看 Chrome 的网络检查器中检索到的资源,验证了脚本元素是否位于检索到的代码片段中。那么,为什么 $.get()
不插入 script 元素,是否可以做我想做的事情?
编辑:
为了澄清,我使用 $.get()
检索 HTML 片段,并使用 $().html(data)
将其插入到 DOM 中。
最佳答案
应该插入脚本元素,就像静态内容一样 - 脚本将不会执行。当您使用 html() 插入 html 时,它会映射到每个元素的 innerHTML 属性。从历史上看,浏览器不会执行以这种方式插入的脚本元素(IE in certain circumstances 除外)。
这也反射(reflect)在definition of innerHTML中在 HTML 5 规范草案中:
Note: script elements inserted using innerHTML do not execute when they are inserted.
如果你想执行脚本,你可以查找元素及其文本,或者从文本创建一个新的脚本元素并将其正确插入到 DOM 中。eval() p>
关于jquery - 为什么 jQuery 的 $.get() 不将脚本元素插入到 DOM 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3686043/