javascript - jQuery AJAX 响应中包含的脚本标记在插入 DOM 时未被评估?

标签 javascript jquery recaptcha

根据 $.ajax 的 jQuery 文档,“包含的脚本标签在插入到 DOM 中时进行评估。”。当我使用 ajax 获取对话框的内容时,该对话框又包含用于显示 ReCaptcha 框的脚本标记,添加到 DOM 时 ReCaptcha 框不会出现。根据 FireBug 的说法,添加的内容中现在也缺少脚本标签。直接导航到对话框内容显示 ReCaptcha 就好了。

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

可以在此处查看实际代码:

https://dustinhendricks.com/

然后点击“立即注册”。

最佳答案

脚本是否尝试执行 document.write() 之类的操作?这在动态加载时不起作用,仅在初始页面加载时起作用。

一般来说,innerHTML'd HTML 中包含的脚本在浏览器之间的评估并不一致。为了解决这个问题,jQuery 实际上会查找脚本标签并手动执行它们。

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

关于javascript - jQuery AJAX 响应中包含的脚本标记在插入 DOM 时未被评估?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8016244/

相关文章:

javascript - 通过另一个元素进行 jQuery 悬停检测?

security - Google Re-Captcha 2 可以防止 CSRF 攻击吗?

unit-testing - 使用 reCaptcha 测试表单提交的安全和标准方法是什么?

javascript - 如何创建具有属性的新产品?

JQuery 鼠标悬停图像叠加

javascript - 在价格计算中添加复选框

javascript - 幻灯片弹出时内容移动

php - Javascript/PHP - reCaptcha 样式已损坏

javascript - 在表单输入中使用按钮更改文本粗体

javascript - 在 Chrome 中使用 Array.prototype.sort 时数组的奇怪排序