2010-01-03 134 views
2

我使用一段简单的代码jQuery的不兼容与Firefox

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

更换使用jQuery的AJAX功能一个div容器的内容。这似乎与IE浏览器,但试图通过Firefox查看后,我收到了一些意想不到的行为。

页面被抓取并正确放置在div内部一会儿;那么整个页面似乎会自动刷新,似乎将自身重定向到一个以

wyciwyg://1/http://
为前缀的页面。不用说,它只是挂在那里,没有任何反应,除非我点击Firefox的停止按钮。 IE/Firefox可能会在jQuery中引起这样的行为吗?在此先感谢您的帮助。

+1

你*看到的是什么*我*得到 – 2010-01-03 21:25:10

+1

什么是你正在加载的URL? – 2010-01-03 21:25:10

+0

感谢指针cballou。我查阅了http://en.wikipedia.org/wiki/WYCIWYG。好的,但我该如何避免这种情况? – heeboir 2010-01-03 21:32:17

回答

2

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

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

虽然这很难说,为什么在目标页面的脚本可能会最终有一个wyciwyg URL更换页面没有一些代码,它发生在calls to document.write过去,这是一个行为肯定会造成断线玩一般情况下,您不能从已经解析过的文档(如您将要加载的文档)写入document。它也可以是一个与附加组件的交互。

+0

感谢您的回答,目标页确实包含

2

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

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

,看看是否能不能解决问题。