我使用的eval()在javascript来评价的JS代码显著量(不只是JSON,但的函数调用)。在通话期间浏览器冻结,即用户不能滚动浏览器或点击任何内容。有没有办法解决这个冻结问题?浏览器冻结()
浏览器冻结()
回答
在大多数浏览器的JavaScript运行在UI线程上,所以它会阻止用户界面为你描述。要取消阻止的UI是给JS分解成更小的部分,并与setTimeout的把它们串起来(这给线程的控制权交还给浏览器UI渲染)的最佳方式
你要打破你功能分成较小的部分。我建议将它们与setTimeout
结合起来。
在现代浏览器中有web workers,可以计算在后台的数据。
在setTimeout内的每行代码之后,UI呈现是否恢复? 时候,说,加载初始页面时,浏览器中执行了大量的JavaScript为什么不结冰发生呢? – 2010-01-04 23:11:34
这取决于浏览器。我相信只有当它是a)最大化CPU时,UI才会冻结b)javascript操纵HTML/CSS。你应该做自己的测试,我没有任何数据支持我的说法。 – 2010-01-04 23:15:00
加载初始页面时执行JavaScript时,UI *会阻止*。大多数JavaScript并不需要那么长时间,所以希望你不会注意到它。 – bobince 2010-01-04 23:43:56
您也可以尝试通过注入新的脚本到页面执行代码:
function executeCode(code) {
var element = document.createElement('script');
element.type = 'text/javascript';
try {
element.appendChild(document.createTextNode(code));
document.body.appendChild(element);
}
catch (e) {
element.text = code;
document.body.appendChild(element);
}
}
var code = 'alert("hello world");';
executeCode(code);
- 1. Javascript - SetTimeout导致浏览器冻结
- 2. map.fitBounds(bounds)导致浏览器冻结
- 3. getusermedia在手机浏览器中冻结
- 4. Javascript:防止浏览器在调用服务器时被冻结
- 5. Mootools:发送请求时如何阻止浏览器冻结
- 6. 我的PHP文件/浏览器刚刚冻结
- 7. jquery脚本冻结浏览器,但工作
- 8. 仅限Chrome浏览器:ajax冻结我的JavaScript执行
- 9. 回声大量的HTML没有冻结浏览器
- 10. 阿贾克斯聊天页面冻结浏览器窗口
- 11. JavaScript“while”循环没有冻结浏览器?
- 12. Backbone/Marionette获取大集合导致浏览器冻结
- 13. Java小应用程序和浏览器冻结
- 14. 浏览器冻结,因为jquery克隆多个div
- 15. 如何处理,因为浏览器冻结嵌套NG-重复
- 16. 当我通过jQuery加载tinyMCE时,浏览器冻结.load()
- 17. 当选择框过多时,jQuery Select2冻结浏览器
- 18. 为什么继续;声明冻结浏览器?
- 19. 通过文件下载冻结浏览器
- 20. JavaScript基准测试代码冻结浏览器?
- 21. 在不冻结浏览器的情况下睡在setInterval里面
- 22. 使用highcharts创建大型热图冻结浏览器
- 23. 复制大量文本时,浏览器(IE和Firefox)会冻结
- 24. Javascript for-loop冻结了浏览器,没有语法错误
- 25. .pdf浏览器请求进入深度冻结
- 26. Xamarin.Forms预览器冻结Visual Studio 2015
- 27. SVN结帐浏览器
- 28. Javascript:尝试加载高分辨率图像而不冻结浏览器
- 29. JavaScript的循环冻结浏览器并不能看到改变的环路
- 30. 为什么sqlite数据库浏览器冻结而不是给出错误?
你将不得不放弃比这更详细。哪个浏览器?你的代码是什么样的? – 2010-01-04 22:53:42