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

时间:2011-11-04 22:05:09

标签: javascript jquery recaptcha

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

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

可以在此处查看代码:

https://dustinhendricks.com/

然后点击“立即注册”。

2 个答案:

答案 0 :(得分:2)

脚本是否尝试执行document.write()之类的操作?只有在初始页面加载时才会动态加载。

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

但这并不重要。即使jQuery没有这样做,脚本也会运行在与第一次加载页面时通常不同的上下文类型中。它不再是一个“内联脚本”,并且很多第三方脚本都是以“内联”作为假设编写的。你必须弄清楚脚本在做什么,并找到一种方法来用动态内容来调用它。

答案 1 :(得分:1)

看看Google reCAPTCHA AJAX API。使用CAPTCHA这种方式可以解决您的问题。

我希望它有所帮助!