Dojo xhrget sync:true调用冻结IE UI,而FF工作正常

时间:2013-07-10 09:46:47

标签: javascript ajax internet-explorer dojo

我正在编写一个简单的基于dojo的应用程序,其中我在UI(jsp)上使用setTimeout(clearMessage())方法显示一些“正在进行中”的消息和微调器以显示消息。

在Firefox上,当时xhrGet调用将转到服务器并返回,此消息将显示给用户该操作正在进行中。一旦操作响应状态,消息就会更新为“操作成功完成”。

但是在IE上,我看到一旦发送了xhrGet调用,IE UI就会冻结,直到响应从服务器返回。由于这种行为,我的“进行中”消息根本没有出现在IE上。

我还阅读了一些评论,一些浏览器可能会冻结Ajax call freezes UI in internet explorer but works fine in firefox同步调用的方式。有没有办法,我可以在IE上显示我的'正在进行中'消息,同时保留同步:xhrGet的真正的attaribute?

对此有何帮助表示赞赏?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您永远不应该在同步模式下使用XmlHttpRequest。这样做会导致很大比例的挂起和强制关闭浏览器:http://blogs.msdn.com/b/ieinternals/archive/2011/08/03/do-not-use-xmlhttprequest-in-synchronous-mode-unless-you-like-to-hang.aspx。那是因为Sync模式会阻止UI线程,直到返回HTTP响应为止; UI线程是运行JavaScript的地方,也是生成UI更新和对用户输入事件的响应的地方。

相反,您应该在异步模式下编写代码,并在返回响应时使用回调来更新UI。