是否可以停止JavaScript执行?
是否有可能以某种方式停止或终止,以防止任何进一步的基于JavaScript的执行发生,而无需重新加载浏览器是否可以停止JavaScript执行?,javascript,Javascript,是否有可能以某种方式停止或终止,以防止任何进一步的基于JavaScript的执行发生,而无需重新加载浏览器 我正在考虑一种与PHP中的exit()但这不会停止调用该函数的父函数的执行。类似的操作可能会起作用: function javascript_abort() { throw new Error('This is not an error. This is just to abort javascript'); } 摘自这里: 简短回答: throw new Error("Somet
我正在考虑一种与PHP中的
exit()代码>但这不会停止调用该函数的父函数的执行。类似的操作可能会起作用:
function javascript_abort()
{
throw new Error('This is not an error. This is just to abort javascript');
}
摘自这里:
简短回答:
throw new Error("Something went badly wrong!");
如果你想知道更多,继续阅读
是否要停止JavaScript的执行以进行开发/调试?
表达式调试器代码中的code>将停止页面执行,然后浏览器的开发工具将允许您查看页面冻结时的状态
你想随意地、故意地停止你的应用程序吗?
错误?
让您的代码处理错误,而不是试图停止所有操作。通过谷歌搜索了解有关异常的信息。它们是一种让代码“跳转”到错误处理过程的聪明方法,而无需使用冗长的if/else块
在阅读了它们之后,如果您认为中断整个代码绝对是唯一的选择,那么抛出一个除了应用程序的“根”范围之外不会在任何地方被“捕获”的异常就是解决方案:
// creates a new exception type:
function FatalError(){ Error.apply(this, arguments); this.name = "FatalError"; }
FatalError.prototype = Object.create(Error.prototype);
// and then, use this to trigger the error:
throw new FatalError("Something went badly wrong!");
确保没有捕获任何异常的catch()
块;在这种情况下,修改它们以重新显示您的“FatalError”
异常:
当任务完成或发生任意事件时?
返回代码>将终止当前函数的执行流
if(someEventHappened) return; // Will prevent subsequent code from being executed
alert("This alert will never be shown.");
注:返回代码>仅在函数内工作
在这两种情况下。。。
…您可能还想知道如何停止异步代码。一切都结束了。最后,要停止()请求,您可以使用xhrObj.abort()
方法(在中也可用)。您可以在函数的早期调用return
,至少该函数将停止运行。您也可以使用抛出“”
来引起错误并停止当前进程。但这些并不能阻止一切setTimeout
和setInterval
可以分别生成延迟函数和按时间间隔运行的函数。这些将继续运行。Javascript事件也将一如既往地工作。这个过程很乏味,但在Firefox中:
打开空白选项卡/窗口,为脚本创建新环境
从当前页面
使用要执行的脚本填充新环境
在新环境中激活脚本
关闭(即杀死)新环境以
停止或终止JavaScript,以防止进一步的错误
基于JavaScript的执行不会发生,无需重新加载浏览器
注:
- 步骤4只停止在该环境中执行JavaScript,而不停止任何其他窗口的脚本
- 不会重新加载原始页面,但会使用脚本加载新的选项卡/窗口
- 当一个选项卡/窗口关闭时,该环境中的所有内容都消失了:所有残余、部分结果、代码等
- 结果必须迁移回父窗口或其他窗口进行保存
- 要重新运行代码,必须重复上述步骤
其他浏览器有并使用不同的约定。否
即使抛出异常,也只会终止当前事件循环。传递给setTimeout或DOM/XMLHttpRequest事件处理程序的回调在其时间到来时仍将运行。在JavaScript函数中定义一个变量,如果要执行该函数,请将该变量设置为1;如果要停止该函数,请将其设置为0
var execute;
function do_something()
{
if (execute == 1)
{
// execute your function
}
else
{
// do nothing
}
}
我正在使用
返回false代码>
如果我想中止JavaScript的向下运行。您可以将JavaScript键入:D(在这里跳出框思考)
或者类似于:
new new
我知道这很老了,但我想这么做,我发现,在我看来,抛出答案的解决方案稍微有点改进。只需暂时抑制错误消息,然后使用setTimeout重新激活它们:
setTimeout(function() {
window.onerror = function(message, url, lineNumber) {
return false;
};
}, 50); // sets a slight delay and then restores normal error reporting
window.onerror = function(message, url, lineNumber) {
return true;
};
throw new Error('controlledError');
我有:
这样,我有5秒钟的时间与UI交互,然后停止。我上次使用的时候,我需要让自定义工具提示保持可见,以便对样式进行一些更改。return-在一个functionDup的调试器中
冻结页面的所有javascript循环。非常有助于消除恼人的javascript,尤其是当页面需要加载javascript时。这是ECMA标准的一部分还是浏览器扩展?你的意思是js中已经存在此功能,还是必须添加它?如果是这样的话,您必须将它添加到您想从中调用它的任何范围中。我指的是Error
对象。这可以告诉您关于它的更多信息:注意:所有剩余的异步函数,如setTimeout
或XMLHttpRequest
仍将执行。目前还没有完全终止JavaScript的标准方法。如果您需要停止整个JS进程以进行调试,请使用Webkit中的开发者工具或Firefox上的Firebug通过执行调试器设置断点代码>。这将完全停止一切执行。@gattsbr这是否仍然会导致下一行立即执行?+1用于调试器代码>语句<代码>返回
外部函数产生语法错误(只是为了让浏览者明白)。有这么多的方面需要考虑…我只是成功地接受了我不想用if(false){…}
执行的部分。所以你不必关心嵌套的注释。@Derek朕會功夫 debugger
非常适合在出现大量异步内容时停止加载页面,但如果可以去掉半透明的灰色覆盖层,就更好了
new new
setTimeout(function() {
window.onerror = function(message, url, lineNumber) {
return false;
};
}, 50); // sets a slight delay and then restores normal error reporting
window.onerror = function(message, url, lineNumber) {
return true;
};
throw new Error('controlledError');
setTimeout(function() { debugger; }, 5000)