阻止“停止执行此脚本”消息
Block "stop execution of this script" message
我有一个包含 2000 个数组的数组,每个数组在 HTA 的 javascript 中有 2000 个值(用于存储 2000x2000 的图像)。我有这段代码来测试数组中有多少个"blue"
值(数组的名称是 image
):
var bluePixels = 0;
for(i = 0; i < image.length; i++){
for(j = 0; j < image[i].length; j++){
if(image[i][j] == "blue"){bluePixels = bluePixels + 1}
}
}
alert(bluePixels);
问题是它会显示一条消息,其中说"停止执行此脚本?此页面上的脚本正在减慢 Internet Explorer 的速度。如果继续,您的计算机可能无法应答。(我不确定确切的单词,因为我的电脑是法语的),然后,如果我单击"否",它会像它应该的那样执行alert(bluePixels)
,但如果我按"是",它就不会。如何阻止此消息?(我知道有一些解决方法,例如在开始时告诉用户按"否",但我想要一个真正的解决方案)
对于 IE 版本 4 到 8,您可以在注册表中执行此操作。在注册表编辑器中打开以下项:HKEY_CURRENT_USER'Software'Microsoft'Internet Explorer'Styles
。如果此密钥不存在,请创建它。在此键中,创建一个名为 MaxScriptStatements
的 DWORD 值,并为其指定值0xFFFFFFFF
(不要担心单击"确定"时值是否自动更改,这是正常的)。
你可以对 JavaScript 进行编程,使其自动执行此操作:
var ws = new ActiveXObject("WScript.Shell");
ws.RegWrite("HKEY_CURRENT_USER''Software''Microsoft''Internet Explorer''Styles''","");
ws.RegWrite("HKEY_CURRENT_USER''Software''Microsoft''Internet Explorer''Styles''MaxScriptStatements",1107296255,"REG_DWORD");
似乎你在这里有一个答案
从答案:"为可能正在查看您的页面的所有用户解决问题的唯一方法是使用计时器分解循环执行的迭代次数,或者重构代码,使其不需要处理那么多指令。
因此,第一种方法可以通过每次此类大型迭代的超时来实现。
您需要将 2000x2000 for 循环拆分为较小的代码段,例如线程或进程,因此浏览器的最大执行时间不会耗尽。在这里,图像数组一次解析一行,由计时器控制:
var bluePixels = 0,
timer,
i = 0;
function countBluePixels() {
for (var j = 0; j < image[i].length; j++){
if (image[i][j] == "blue") {
bluePixels = bluePixels + 1;
}
}
i=i+1;
if (i>image.length) {
clearInterval(timer);
alert(bluePixels);
}
}
timer = window.setInterval(countBluePixels, 0);
代码是相同的,只是在 2000 个进程中拆分而不是 1。
- 选项卡侦听器未被来自后台脚本的消息激活
- 如何在弹出脚本到内容脚本之间发送消息并返回
- 在加载之前从内容脚本向加载项发出消息
- 我收到消息“资源解释为脚本,但使用 MIME 类型文本/html 传输”
- 将消息从控制器传递到视图中的 AJAX 脚本
- Chrome扩展程序,如何将消息从面板发送到内容脚本
- 为什么我的附加组件面板的内容脚本在更改 contentURL 后不再响应端口消息
- JS脚本未按预期工作,没有错误消息
- chrome广播消息到内容脚本
- 是否可以使用chrome.tabs.sendmessage从内容脚本向背景页发送消息
- 使用chrome扩展,如何使用长寿命连接(端口)将消息从后台脚本传递到内容脚本
- 如何筛选重复消息的SSE脚本
- 从主脚本到内容脚本的多条消息
- 阻止“停止执行此脚本”消息
- asp.net 中的脚本消息框
- 面板&在Firefox扩展中传递的PageMod内容脚本消息
- 未调用内容脚本消息处理程序
- 使用内容脚本/消息与Chrome应用程序(不是扩展)发送数据
- HTML表单正在重新加载,java脚本消息没有显示
- 停止运行这个脚本?"消息,当用户单击我的HTML选择元素时出现