【发布时间】:2011-03-03 04:29:48
【问题描述】:
我需要在我的页面上运行超长的 JavaScript。客户抱怨 IE 显示脚本太长的警告对话框。不幸的是,我们无法减少脚本的长度,因此我正在尝试寻找绕过该问题的方法。
IE 跟踪执行的总数 script 语句并在每次启动新脚本执行时重置值,例如从超时或从事件处理程序开始。它显示一个 “长时间运行脚本”对话框时 该值超过了阈值。
但是,我尝试同时使用 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>
为了使代码工作,你必须编辑注册表,去 HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Styles,并将名为“MaxScriptStatements”的 DWORD 值设置为 100,000。如果 Styles 键不存在,请创建一个名为 Styles 的新键。
谢谢,
【问题讨论】:
-
那里有问题吗?
-
@Marc 感谢您的快速回复。我已经先搜索了它,但我没有找到任何可行的解决方案。其实我觉得可能没有解决办法。我只是想确认一下并向我的老板报告。 ;)
标签: javascript internet-explorer