我是否可以对JavaScript设置时间限制(例如,使用iframe)?

我是否可以对JavaScript设置时间限制(例如,使用iframe)?,javascript,iframe,Javascript,Iframe,我想运行一些有时间限制的外部JavaScript,这样,如果超过N秒,它就会停止 一些浏览器,例如Firefox,已经通过一个询问是否允许脚本继续运行的对话框来执行此操作。不过,我想了解更多: 我想设置自己的时间限制,而不是使用浏览器的默认设置(例如,我认为Chrome比Firefox长得多) 我希望能够做到这一点,每个脚本的基础上,而不是每页。一个页面可能包含我希望以这种方式限制的多个脚本(因此我的想法是使用元素) 我在想,如果有一个属性可以附加到,那将非常方便-例如,类似js time

我想运行一些有时间限制的外部JavaScript,这样,如果超过N秒,它就会停止

一些浏览器,例如Firefox,已经通过一个询问是否允许脚本继续运行的对话框来执行此操作。不过,我想了解更多:

  • 我想设置自己的时间限制,而不是使用浏览器的默认设置(例如,我认为Chrome比Firefox长得多)
  • 我希望能够做到这一点,每个脚本的基础上,而不是每页。一个页面可能包含我希望以这种方式限制的多个脚本(因此我的想法是使用
    元素)
我在想,如果有一个属性可以附加到
,那将非常方便-例如,类似
js time limit=“5000”
(我刚刚编造出来)-但我找不到类似的东西


这可能吗?要在浏览器中对JavaScript执行设置可配置的时间限制?

如果iframe正在执行计算工作,并且不需要访问DOM,请使用web workers:

这里还有一个库,可以为您提取出困难的部分

重要部分:

专门的Web工作人员为Web内容提供了一种在后台线程中运行脚本的简单方法

如果需要立即终止正在运行的worker,可以调用worker的terminate()方法:
myWorker.terminate()

浏览器兼容性

Chrome  Firefox (Gecko)  Internet Explorer  Opera  Safari (WebKit)
   3        3.5 (1.9.1)          10         10.60        4

如果iframe正在执行计算工作,并且不需要访问DOM,则使用web workers:

这里还有一个库,可以为您提取出困难的部分

重要部分:

专门的Web工作人员为Web内容提供了一种在后台线程中运行脚本的简单方法

如果需要立即终止正在运行的worker,可以调用worker的terminate()方法:
myWorker.terminate()

浏览器兼容性

Chrome  Firefox (Gecko)  Internet Explorer  Opera  Safari (WebKit)
   3        3.5 (1.9.1)          10         10.60        4

对于后代:我最初的目标是允许网站用户提交JS代码,并在后台有时间限制地运行它,这样,例如,无限循环就不会对CPU造成严重破坏

我创建了一个名为usingtheapproach的库。您可以这样使用它:

var lemming = new Lemming('code to eval');

lemming.onTimeout(function() {
  alert('Timed out!');
});

lemming.onResult(function(result) {
  alert('Result: ' + result);
});

lemming.run({ timeout: 5000 });

您可以查看更多详细信息。

面向子孙后代:我最初的目标是允许网站用户提交JS代码,并在后台有时间限制地运行它,以便(例如)无限循环不会对CPU造成严重破坏

我创建了一个名为usingtheapproach的库。您可以这样使用它:

var lemming = new Lemming('code to eval');

lemming.onTimeout(function() {
  alert('Timed out!');
});

lemming.onResult(function(result) {
  alert('Result: ' + result);
});

lemming.run({ timeout: 5000 });

您可以查看更多详细信息。

为什么不在页面加载后动态添加iframe?您所说的时间限制是什么意思?5秒后消失?5秒后出现?5秒后发射核导弹?我想你应该解释一下better@stackErr:在之前或之后,如果它有不好的JavaScript(例如,无限循环),一旦我添加它,它将锁定浏览器。我想基本上说,“你有X秒的时间来运行你所有的JavaScript;然后,关掉JavaScript。”@JoeFrambach:也就是说,如果你愿意的话,我可以把这个问题更新得更一般。或者,如果你只是想关闭它,显然我不能阻止你。你应该更新问题。为什么不在页面加载后动态添加iframe?你所说的时间限制是什么意思?5秒后消失?5秒后出现?5秒后发射核导弹?我想你应该解释一下better@stackErr:在之前或之后,如果它有不好的JavaScript(例如,无限循环),一旦我添加它,它将锁定浏览器。我想基本上说,“你有X秒的时间来运行你所有的JavaScript;然后,关掉JavaScript。”@JoeFrambach:也就是说,如果你愿意的话,我可以把这个问题更新得更一般。或者,如果你只是想关闭它,显然我不能阻止你。你应该更新问题。