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

Dojo xhrget sync:true calls freeze IE UI, while FF works fine

本文关键字:FF 工作 UI IE xrget-sync true 调用 冻结 Dojo      更新时间:2023-09-26

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

在Firefox上,xhrGet调用暂时转到服务器并返回,向用户显示操作正在进行中的消息。操作响应状态后,消息将更新为"操作成功完成"。

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

我还读到一些评论,一些浏览器可以通过这种方式冻结Ajax的同步调用。调用在internet explorer中冻结UI,但在firefox中效果良好。有没有一种方法,我可以在IE上显示我的"进行中"消息,同时保持xhrGet的同步:真正的攻击?

感谢您的帮助?

提前谢谢。

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

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