jQuery中包含的脚本标签在插入DOM时不会被AJAX响应计算

Script tags contained in jQuery AJAX response not evaluated when inserted into the DOM?

本文关键字:AJAX 计算 响应 DOM 插入 包含 脚本 标签 jQuery      更新时间:2023-09-26

根据jQuery文档中$。当插入到DOM中时,包含的脚本标签将被计算。当我使用ajax抓取对话框的内容时,该对话框又包含一个用于显示ReCaptcha框的脚本标记,当将ReCaptcha框添加到DOM中时,不会出现该对话框。根据FireBug,脚本标签现在也从添加的内容中消失了。直接导航到对话框内容显示验证码很好。

有谁知道为什么会发生这种情况和/或知道解决方法吗?如有任何帮助,我将不胜感激。

运行中的代码可以在这里查看:

https://dustinhendricks.com/

然后点击"立即注册"

脚本是否尝试做像document.write()这样的事情?这在动态加载时不起作用,只有在初始页面加载时才起作用。

一般来说,HTML中包含的innerHTML脚本不会在不同浏览器中一致地求值。为了解决这个问题,jQuery实际上查找脚本标记并手动执行它们。

但这并不重要。即使jQuery没有这样做,脚本也会在不同类型的上下文中运行,而不是在第一次加载页面时运行。它不再是真正的"内联脚本"了,许多第三方脚本都是在假设它是"内联"的情况下编写的。您必须弄清楚脚本在做什么,并找到一种使用动态内容调用它的方法。

看一下Google reCAPTCHA AJAX API。用这种方式使用验证码应该可以解决您的问题。

我希望它有帮助!