在使用ajax 1.4时,我遇到了外部JS在使用html()访问jQuery响应时被删除的问题。
我使用ajax请求加载下一个页面,为tumblr主题创建了一个无限的滚动效果。Tumblr以音频和幻灯片形式输出JS,以呈现<embed>元素(Flash播放器)来显示内容。无法更改标记。
使用jQuery 1.3.2,一切工作正常,外部JS被执行并呈现播放器,但是在1.4中,javascript被移除,我只剩下回退文本。JS包含在响应中,但是当在ajax回调中使用html()时,我无法检索或获取要执行的javascript。
我想使用jQuery 1.4,因为我在其他部分使用了它的一些新功能,我可以使用split让它工作,但我不确定在特定字符串上拆分响应是否可靠。
我已经准备了一个basic sample (包括两个文件,test.html和request.html)来演示这个问题。打开test.html以从request.html加载本地请求
这种行为是故意的吗,我可以绕过它吗,或者我只是做错了?
发布于 2010-01-21 18:39:54
来自.ajax()上的jQuery文档
如果指定了html,则在将
作为字符串返回之前,将执行检索到的数据中的任何嵌入的JavaScript。类似地,脚本将执行从服务器拉回的JavaScript,然后将脚本本身作为文本数据返回。
我找不到任何绕过它的方法...但它的表现似乎与1.3.2有所不同,"1.3-compat“插件似乎也无法修复它。
发布于 2010-01-21 18:22:13
在我看来,这像是1.4中的一个bug --我使用您的示例代码得到了相同的结果;切换回1.3.2允许再次执行嵌入的脚本。
文档当然没有提到1.4中的任何更改,这些更改会阻止在检索到的HTML中执行脚本。我会在jQuery forum上发布一个问题,看看其他人是否也有这个问题;你可能也会引起某个jQuery开发人员的注意。
https://stackoverflow.com/questions/2108121
复制相似问题