为什么更新进度条时浏览器挂起
Why Does The Browser Hang When Updating The Progress Bar?
>问题:我有一些代码正在运行,它需要定期更新进度条。它似乎工作正常,直到我到达更新发生在 for 循环中的部分代码。
挂断后,进度条将更新为 for 循环后应有的状态。例如,在此代码中:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('#Button1').click(function(){
$("#Progressbar").val(0); //reset to 0
for(var i = 0; i < 100000; i++){
$("#Progressbar").val(i/1000);
//if(i === 50000){
// alert("Half Way There");
//}
}
});
});
</script>
</head>
<body>
<button id="Button1">Simulate Progress</button>
<progress id="Progressbar" value="0" max="100"></progress>
</body>
</html>
按下按钮后,我的浏览器(Firefox)将挂起,几秒钟后显示100%完成进度条。如果取消注释代码,则在警报显示时,您将看到进度条已完成 50%。
为什么它像那样挂起并且不产生流畅的进度更新?我尝试使用Web Workers,但我看到了几乎相同的响应。
JavaScript 在单个线程中运行。你让它忙于循环,以至于它没有时间去重新绘制页面。
请改用带有 setTimeout
或 setInterval
的迭代器。
相关文章:
- Chrome浏览器“;挂起”;同时在循环中执行AJAX请求
- fullcalendar在删除导致浏览器挂起的多个事件时速度较慢
- jQuery.每个都会导致浏览器挂起
- Javascript中基于类的框架导致浏览器挂起
- JQgrid 在渲染时完全挂起浏览器
- 浏览器在 ExtJS 中执行特定行时挂起
- 浏览器在使用Highcharts绘制超过10000个系列时挂起
- 添加要素图层将挂起浏览器
- 为什么HighChart挂起浏览器
- Javascript导致浏览器挂起
- HTML中嵌入的Java applet在发送电子邮件时挂起浏览器
- Internet Explorer浏览器问题:浏览器不提交POST数据与Ajax请求,服务器/客户端挂起
- 使用ajax进行自动刷新会在10-15秒后导致浏览器挂起或崩溃
- 简单的jquery每个循环使浏览器挂起
- 我的scrollTop() jQuery方法一旦滚动就挂起浏览器
- 如何调试挂起浏览器的JavaScript ?
- 我可以使用javascript强制浏览器“刷新”吗?任何挂起的布局更改
- 为什么更新进度条时浏览器挂起
- 使用Javascript基于二维属性数组自动生成多个相同类型的html元素会导致浏览器挂起
- 浏览器挂起/挂起检测