我需要在页面加载时进行非常慢的ajax调用。问题是在Chrome中,标签上的小圆圈一直在旋转,直到ajax调用完成。在Firefox 4和IE9中它按预期工作。
目前我正在使用
$(document).ready(function () {
$.doTimeout(1000, slowRequest);
});
超时有帮助,因为它允许浏览器继续,如果浏览器在超时之前完成一切都很好,但我发现根据客户端/服务器的速度,超时可能不够长。
有没有更好的方法来实现这一目标?
答案 0 :(得分:1)
老实说,我认为您不应该关心浏览器上的旋转圈,而是关心代码的执行顺序。 我只想做:
$(document).ready(function () {
slowRequest();
});
或者,setTimeout(slowRequest, 0);
,重点是当您已经有要发送的数据以及从哪里接收数据时启动您的ajax请求。
延迟1秒后,你会在某些浏览器中避开旋转圈,但会牺牲时间(延迟1秒!)。我认为执行时间比视觉细节更重要。
当然,你的ajax请求必须是异步的(我希望它是),如果没有,浏览器将会挂起。
希望这会有所帮助。干杯
答案 1 :(得分:0)
由于您提到了Chrome发生的问题,因此在script
标记上包含了进行慢速AJAX调用的代码,您可以尝试添加async
属性,如下所示:
<script type="text/javascript" async="async">
...
</script>
我认为该属性适用于Firefox 3.6+和Chrome,但不适用于任何其他浏览器:(