我正在使用一段简单的代码
$("container").load(url, function(){ callback();})
使用jQuery的AJAX功能替换div容器的内容。这似乎与Internet Explorer一起使用,但是在尝试通过Firefox查看后,我得到了一些意想不到的行为。
页面被取出并正确放置在div中一会儿;然后整个页面似乎自动刷新,似乎将自己重定向到前缀为
wyciwyg://1/http://的页面 不用说它只是挂在那里有一个空白页面,没有任何反应,除非我点击Firefox的停止按钮。 IE / Firefox之间是否存在可能导致jQuery中出现这种行为的差异?在此先感谢您的帮助。
答案 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();});
并查看是否无法解决问题。