jquery - 为什么 jQuery 的 $.get() 不将脚本元素插入到 DOM 中?

标签 jquery

我正在使用 $.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/

相关文章:

javascript - 使用 jquery 或 javascript 在 2 个复选框之间切换

javascript - 使用 jQuery 过滤 html 字段

javascript - Show only 7 list items in list, on "next"click hide current 7 show next 7, same with "previous"click

javascript - 所有图像的src与jquery

javascript - 使用javascript更改类的CSS样式,但不在DOM中

jquery - 防止默认值在我的 javascript 中不起作用

javascript - 如何正确从 JSON.stringify 中提取数据

jQuery 结合 .ready 和 .resize 函数

javascript - 单击按钮隐藏或取消隐藏文本

javascript - 应该在标记中使用 Head.js 还是在 </body> 之前使用缩小脚本和脚本?