将游标设置为JavaScript以进行长时间的同步操作

时间:2013-01-17 20:09:30

标签: javascript html5 cursor

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

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

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

1 个答案:

答案 0 :(得分:3)

正如Teemu上面评论的那样,你必须延迟函数的执行,即使是零毫秒(这将调度它用于事件循环的下一个滴答,让浏览器有机会在启动之前更新UI) :

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

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

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