我的网络应用程序存在这个奇怪的问题。你看,我正在使用带有Forms API的jQuery并执行$('#MyForm')。ajaxSubmit(api parms和callback函数在这里)。
然而,当我这样做时,只有在Firefox上,页面加载图标开始旋转,页面加载进度条在状态栏中运行,停止按钮变为红色 - 但它已经发布了表单和带回了一个结果。如果我刷新页面并继续尝试这样做,它会随机显示问题,但不能始终如一。
在Windows 2008 Server上的FF2和Ubuntu 8.04上的FF3上发生此问题。 IE6,IE7,Opera(最新稳定版,2008年11月)或Safari(最新稳定版,2008年11月)未见问题。
这只是FF中使用AJAX的已知错误,还是我可以用jQuery来阻止页面加载问题?
编辑:可能与TinyMCE有关。我无法确认这100%,但是当我使用jQuery带回一个带有TinyMCE控件的表单时,问题似乎更频繁地展现出来。我尝试使用一个没有TinyMCE控件的表单,多次,并且无法解决问题。同样,这没什么结论,但可能是一个因素。
编辑:好的,我刚刚评论了TinyMCE的东西,我可以确认问题就消失了。如果我带回TinyMCE控件,问题会随机发生。答案 0 :(得分:0)
尝试查看服务器响应,使用firebug确切查看当时是否存在问题,或者是否有任何javascript异常提升。
答案 1 :(得分:0)
当我在一个大量使用iframe的网站上工作时,我曾经遇到过这个问题。 如果我没记错的话,一个简单的方法就是在顶页中创建另一个iframe,其高度/宽度最小,并将其命名为frameFix或类似名称。
然后从Iframe内容页面使用body load事件写入空字符串,然后关闭frameFix iframe。这会强制状态栏完全加载。
e.g
iframe内容页面
<body onload="javascript:progressBarHack()">
function progressBarHack(){
top.frameFix.document.write("");
top.frameFix.close();
return;
}
答案 2 :(得分:0)
你可能不想upmod这个答案 - 我只是在redsquare的回答中进行推断,这解决了我。
我正在使用AJAX(jQuery Form Plugin API和.ajaxSubmit())来拉回表单。当我在该表单上点击“保存”或“取消”时,它在Firefox中显示红色停止按钮并且不会停止。
所以,为了解决这个问题,我需要接受调用页面并在其中添加一个隐藏的IFRAME:
<iframe frameborder="0" src="http://mysite.com/fixdoc.html" id="frameFix" height="1" width="1" style="position: relative; left: -500px"></iframe>
然后,我需要创建一个fixdoc.html,它只是一个普通的空HTML页面,其中包含标准标记内容。
然后,在我的逻辑中完全保存或取消完成后,我需要执行此操作:
var ifr = document.getElementById('frameFix');
var doc = ifr.contentDocument;
if (doc == undefined || doc == null)
doc = testFrame.contentWindow.document;
doc.open();
doc.write(' ');
doc.close();
不知何故,这告诉Firefox退出无限加载循环。
答案 3 :(得分:0)
我遇到了这个代码的问题,该代码运行以在空的可见iframe上设置值:
function loadIframeContent() {
$.post(
'/my/content/url',
$('#my-form').serialize(),
function (data) {
$('#my-preview-div-with-iframe').dialog('open');
$('#id-on-my-iframe-tag')[0]
.contentWindow
.document
.write(data);
resizeIframeToContent();
},
'html'
);
}
解决方案原来是:
var $document = $('#id-on-my-iframe-tag')[0]
.contentWindow
.document;
$document.open();
$document.write(data);
$document.close();
所以最后,document.write(data)
调用是无链接的,因此首先可以打开文档,然后编写,然后最终关闭。不要将文档变量命名为document
(至少不是Firefox 3),因为它会发生碰撞 - 使用$document
或类似名称。
我也在使用TinyMCE,但这似乎是无关的。