Xi *_*ang 7 javascript internet-explorer
我需要在我的页面上运行超长JavaScript.客户端抱怨IE显示脚本太长的警告对话框.不幸的是,我们无法减少脚本的长度,所以我试图找到问题的旁路.
根据微软支持网站:
IE跟踪已执行脚本语句的总数,并在每次启动新脚本时重置该值,例如从超时或事件处理程序.当该值超过阈值量时,它会显示"长时间运行的脚本"对话框.
但是我尝试使用setInterval()和setTimeout()将我的脚本分成几部分,但没有一个正常工作.我使用的浏览器是IE8.我的代码如下:
<html>
<head>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.1.min.js"></script>
</head>
<body>
<div id ="test"></div>
<div id ="log"></div>
</body>
<script>
var repeat =0;
function heavyTask(){
if (repeat<50){
y = longRun();
setTimeout("heavyTask()",100);
}else{
$('#test').html("done!");
}
}
function longRun(){
for(var i =0; i<20000;i++){ }
repeat++;
$('#log').append('<div>repeat: '+ repeat +'</div>');
};
$(document).ready(function () {
setTimeout("heavyTask()",100);
});
</script></html>
Run Code Online (Sandbox Code Playgroud)
为了使代码有效,您必须编辑Registry,转到HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Styles,并将名为"MaxScriptStatements"的DWORD值设置为100,000.如果样式键不存在,请创建一个名为样式的新键.
谢谢,