我正在尝试在长时间运行的同步 XmlHttpRequest的开头设置一个全局页面光标(在cursor: wait !important;
上使用document.body
)(同步糟透了我知道但是让我们现在不用担心),但浏览器(在Chrome中测试)在脚本返回控件之前不会更新光标,直到长时间运行操作结束才会发生。
它适用于异步XmlHttpRequests(因此将同步的迁移变为异步显然是一种解决方案)。
有没有办法让浏览器在不中断当前同步操作的情况下刷新光标?
答案 0 :(得分:3)
正如Teemu上面评论的那样,你必须延迟函数的执行,即使是零毫秒(这将调度它用于事件循环的下一个滴答,让浏览器有机会在启动之前更新UI) :
// change cursor
document.body.style.cursor = "wait !important";
// call long-running function from setTimeout
setTimeout(longRunningFunction, 0);
这是我所知道的唯一解决方案,但它可能对您不起作用,因为您声明“现在很多逻辑都是在同步的假设下编写的”,因为您将有效地启动它异步。