spin.js在IE和FF上长时间运行线程时停止旋转
spin.js stops spinning during long running thread on IE and FF
我的代码:
$(document).ready(function () {
$("#divContent").hide();
$("#divProcessing").spin();
$("#divProcessing").show();
setTimeout(function () {
Longrunningfunction1
Longrunningfunction2
Longrunningfunctionn
//All done
$("#divProcessing").hide();
$("#divContent").show();
$("#divContent").style = "margin-top:60px;height:100%;display:''";
$("#tabbed-nav").data('zozoTabs').refresh();
}, 0);
});
使用SetTimeout如上所述,我设法让处理div行为正确,即显示,然后隐藏和显示内容div时,一切都完成了。问题是,在IE和FF中,旋转器在一段时间后停止旋转。在Chrome中,它工作完美,旋转器继续运行。
I have try:
- 强制重画处理div
- 使用不同的js旋转器(比spin.js更糟糕的行为-它们从不出现)
- 使用css3动画代替spin.js(从不动画)
- 额外settimeout
- 设置时间间隔试图让用户界面重绘。
到目前为止什么都没起作用。除了将长时间运行的流程移到新视图之外,我还能做些什么吗?我知道这些问题是与js是单线程的,但由于chrome是好的,我认为可能有一个解决方案。谢谢。
首先我通常的注意:JavaScript不是单线程的。只是在浏览器上,只有一个主UI JavaScript线程。但是JavaScript,这种语言,几乎没有线程的概念,并且可以(并且已经)在其他环境中以多线程的方式实现。
一些浏览器也使用相同的UI线程来执行非JavaScript任务,似乎spin.js要么依赖于JavaScript(因为它谈论关键帧的东西),要么受到主UI线程繁忙的影响。
如果可能的话,解决方案是将长时间运行的函数从主UI线程移到web worker中。这有很多好处,尤其是在worker工作时UI保持响应。Web worker在现代浏览器中得到很好的支持,但不支持IE8或IE9以及v4.4.4之前的Android浏览器。
相关文章:
- 在javaservlet doPost方法中启动线程时,无法返回异常消息
- javascript中的多线程
- Javascript支持多线程吗
- 如何在nodejs中创建线程池
- 在节点.js的多个线程中运行任务
- Do JS Reference Errors停止运行时线程执行
- Cordova应用程序在安卓系统上运行,但线程似乎在ios上冻结了;“由于页面加载而重置插件”;
- 是文件系统在 JavaScript 中的不同线程上运行
- 我可以在单独的线程中运行 UIWebView 吗?
- JavaScript 函数可以检查它是否在 Web Worker 线程上运行吗?
- 如何将包含在 eval 方法中的两个文件作为线程运行
- AJAX 以多线程方式运行
- 如何使 UI 线程连续运行
- 在所有主流浏览器中,GIF动画和javascript在同一个线程上运行,这是真的吗?
- Google V8引擎可以在不同的上下文、不同的线程中同时运行不同的javascript吗?
- 中断运行javascript脚本的java线程
- spin.js在IE和FF上长时间运行线程时停止旋转
- Canvas显然运行多个线程
- 浏览器脚本是否强制要求在单个线程上运行
- 是否可以在单独的线程中运行 HTML 5 视频