在JavaScript中设置游标,用于长时间的同步操作
Set the cursor in JavaScript for a long synchronous operation
我试图设置一个全局页面光标(使用cursor: wait !important;
上document.body
)在一个长期运行的同步 XmlHttpRequest(同步吮吮我知道,但让我们不要担心,现在)的开始,但是浏览器(在Chrome测试)不更新光标,直到控制从脚本返回,这不会发生,直到长时间运行的操作结束。
它非常适合异步xmlhttprequest(因此将同步的迁移为异步的显然是一个解决方案)。
有没有办法让浏览器刷新光标而不中断当前的同步操作?
正如上面Teemu所评论的那样,你必须延迟函数的执行,即使是0毫秒(这会将它调度到事件循环的下一个tick,让浏览器有机会在开始之前更新UI):
// change cursor
document.body.style.cursor = "wait !important";
// call long-running function from setTimeout
setTimeout(longRunningFunction, 0);
这是我知道的唯一解决方案,但它可能不适合你,因为你说"现在很多逻辑都是在假设它是同步的情况下编写的",因为你将有效地使它异步启动。
相关文章:
- 为什么我的上下文选择器和.buttonset()在ie中花费了这么长时间
- 谷歌地图需要很长时间才能在ie11中渲染
- 有没有一种方法可以检查javascript以毫秒为单位执行一个函数需要多长时间
- 我一直收到的控制台警告是什么?推迟长时间运行的计时器任务以提高滚动的流畅性
- 为什么这个代码不起作用?我花了很长时间试图弄清楚这一点
- 如何在长时间执行JavaScript期间显示微调器
- 长时间轮询:每个浏览器中的通知
- 完整日历:如何支持一次点击和不长时间点击
- 如何使用 javascript 停止对 asp.net 进行正在进行的回发(长时间运行的执行)
- Javascript/Jquery setTimeout 函数不适用于长 html
- 为什么这个 AJAX 调用需要这么长时间
- 为什么这个正则表达式需要这么长时间才能执行
- 如何修复长时间运行的脚本
- Node.js中的垃圾收集作用域-变量将保持设置状态多长时间
- 谷歌分析是否有一个“;心跳;用于长时间运行的web应用程序的功能
- chrome setInterval()用于模糊选项卡无法正常工作,即使是1秒或更长时间
- 流星0.8.0+,如何提供'忙转轮'用于长时间运行的代码
- 如何使用适用于Android和iPhone的javascript检测长时间的触摸压力
- 在JavaScript中设置游标,用于长时间的同步操作
- setTimeout用于长时间(最多24小时)