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