jQuery与Firefox不兼容

时间:2010-01-03 21:21:56

标签: jquery ajax firefox

我正在使用一段简单的代码

$("container").load(url, function(){ callback();})

使用jQuery的AJAX功能替换div容器的内容。这似乎与Internet Explorer一起使用,但是在尝试通过Firefox查看后,我得到了一些意想不到的行为。

页面被取出并正确放置在div中一会儿;然后整个页面似乎自动刷新,似乎将自己重定向到前缀为

wyciwyg://1/http://
的页面 不用说它只是挂在那里有一个空白页面,没有任何反应,除非我点击Firefox的停止按钮。 IE / Firefox之间是否存在可能导致jQuery中出现这种行为的差异?在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

在目标<script>返回的文档中可能有url个标签。

将内容加载到包含<script>标签的页面中有浏览器特定的怪癖,jQuery无法隐藏(好吧......它尝试,但在这个过程中使怪癖更加古怪和奇怪)。您应该避免提取包含<script>的网页,以便与load()一样用作HTML。这意味着通常不会load包含任何旧HTML结构的任意页面,而只包含用于加载jQuery内容的地址。

虽然很难说为什么目标网页中的脚本最终会用wyciwyg URL替换页面而没有一些代码可以使用,但过去发生过calls to document.write,这是一般来说肯定会导致破坏的行为,因为您无法从已经解析的文档(例如您要加载的文档)中写入document。它也可以是与附加组件的交互。

答案 1 :(得分:2)

如果document.write是您的问题,请尝试writeCapture.js(完全披露:我是作者)。它有一个jQuery plugin,所以请将其包含在内,并将代码更改为:

$("container").writeCapture().load(url, function(){ callback();});

并查看是否无法解决问题。