0

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

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

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

我还阅读了一些评论,一些浏览器可能会以这种方式冻结同步调用Ajax call freezes UI in internet explorer 但在 firefox 中运行良好。有没有办法让我的“进行中”消息也显示在 IE 上,同时保留 xhrGet 的 synch:true 属性?

任何帮助在这里表示赞赏?

提前致谢。

4

1 回答 1

0

您永远不应该在同步模式下使用 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。这是因为 Sync 模式会阻塞 UI 线程,直到返回 HTTP 响应;UI 线程是 JavaScript 运行的地方,也是生成 UI 更新和对用户输入事件的响应的地方。

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

于 2013-07-10T18:23:15.573 回答