2

所以我在这里有点困惑。我不明白为什么脚本在使用 jquery.html()而不是innerHTML. 我查看了 jQuery 的源代码.html,它似乎仍在innerHTML使用中。谁能解释这种行为?

我在 ajax 响应期间遇到了这个问题。我正在取回 html 和一个script带有一些 javascript 的标签,我通常使用html,但由于某种原因,这次使用innerHTML时认为没有区别。

我知道这似乎是本地化的,因此我制作了一个带有超时行为的 jsFiddle,其行为类似于 ajax 响应,以突出问题。

jsFiddle 演示行为

4

1 回答 1

3

据我所知,jQuery 会尝试使用innerHTML,但如果失败,它将退回到清空目标元素,并通过 DOM 附加新内容。

更新:见下面 Felix Kling 的评论;基本上,如果要插入的字符串内容包含脚本或样式/链接标签,jQuery 不会直接使用innerHTML

当这种情况发生时 - 在你的情况下 - 内容会通过一个domManip我不声称完全理解的函数调用,但它确实会专门寻找和评估脚本。

所以简短的回答是:innerHTML毕竟 jQuery 没有使用。希望我能给你一个更好的一步一步的确切发生的事情,但我不太了解 jQuery 的源代码。我只是设置了一个断点(在 jQuery-1.9.1.js 中的第 6074 行;jQuery 最终决定使用该点innerHTML)并稍微绕过源代码。

于 2013-03-24T23:58:41.827 回答