3

我正在尝试在长时间运行的同步XmlHttpRequest的开头设置一个全局页面光标(使用cursor: wait !important;on ) (我知道同步很烂,但现在不用担心),但是浏览器(在 Chrome 中测试)没有更新光标直到控制从脚本返回,直到长时间运行的操作结束时才会发生。document.body

它适用于异步 XmlHttpRequest(因此将同步的迁移到异步显然是一种解决方案)。

有没有办法让浏览器在不中断当前同步操作的情况下刷新光标?

4

1 回答 1

3

正如 Teemu 上面评论的那样,您必须延迟函数的执行,即使是 0 毫秒(这会将其安排在事件循环的下一个滴答声中,让浏览器有机会在启动之前更新 UI):

// change cursor
document.body.style.cursor = "wait !important";

// call long-running function from setTimeout
setTimeout(longRunningFunction, 0);

这是我知道的唯一解决方案,但它可能对您不起作用,因为您声明“现在很多逻辑都是在假设它是同步的情况下编写的”,因为您将有效地使其异步启动。

于 2013-01-17T20:19:26.887 回答