是否有可能以某种方式停止或终止JavaScript,以防止在不重新加载浏览器的情况下发生任何进一步的基于JavaScript的执行?
我在思考PHP中的exit()
等效JavaScript。
答案 0 :(得分:461)
简短回答:
throw new Error("Something went badly wrong!");
如果您想了解更多信息,请继续阅读。
代码中的表达式debugger;
将暂停页面执行,然后您的浏览器开发人员工具将允许您在页面被冻结时查看其状态。
不要试图阻止所有内容,而是让代码处理错误。通过谷歌搜索了解Exception
。它们是一种智能的方法,可让您的代码“跳转”到错误处理过程,而无需使用繁琐的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"
例外:
catch(exc){ if(exc instanceof FatalError) throw exc; else /* current code here */ }
return;
将终止当前函数的执行流程。
if(someEventHappened) return; // Will prevent subsequent code from being executed
alert("This alert will never be shown.");
注意:return;
仅适用于函数。
...您可能想知道如何停止异步代码。完成了clearTimeout
和clearInterval
。最后,要停止XHR( Ajax )请求,您可以使用xhrObj.abort()
方法(jQuery中提供的 )。
答案 1 :(得分:103)
你可以写一个JavaScript拼写错误:D(在这里开箱即用)
thisFunctionDoesNotExistAndWasCreatedWithTheOnlyPurposeOfStopJavascriptExecutionOfAllTypesIncludingCatchAndAnyArbitraryWeirdScenario();
或类似的东西:
new new
答案 2 :(得分:29)
这样的事可能有用:
function javascript_abort()
{
throw new Error('This is not an error. This is just to abort javascript');
}
从这里采取:
答案 3 :(得分:23)
没有
即使抛出异常,它也只会终止当前的事件循环。传递给setTimeout或DOM / XMLHttpRequest事件处理程序的回调仍将在他们的时间到来时运行。
答案 4 :(得分:15)
我做:
setTimeout(function() { debugger; }, 5000)
这样,我有5秒的时间与UI进行交互,然后停止。我使用的Las时间是当我需要保持自定义工具提示可见时,做一些样式更改。
答案 5 :(得分:11)
我正在使用
return false;
如果我想从JavaScript中止进一步向下运行。
答案 6 :(得分:9)
如果你在一个函数中,可以使用return;
退出它,但这不会停止执行调用该函数的父函数。
答案 7 :(得分:8)
你可以在函数的早期调用return
,至少该函数将停止运行。您也可以使用throw ''
导致错误并停止当前进程。但这些并不能阻止一切。 setTimeout
和setInterval
可以分别生成在一个时间间隔内运行的延迟函数和函数。那些将继续运行。 Javascript事件也将继续照常工作。
答案 8 :(得分:1)
这个过程很乏味,但在Firefox中:
以[以某种方式]阻止[s]进一步阻止或终止JavaScript 发生基于JavaScript的执行,无需重新加载浏览器
注意:
其他浏览器拥有并使用不同的约定。
答案 9 :(得分:1)
在JavaScript函数中定义一个变量,如果你想要执行该函数,请将此变量设置为1,如果要停止它,则将其设置为0
var execute;
function do_something()
{
if (execute == 1)
{
// execute your function
}
else
{
// do nothing
}
}
答案 10 :(得分:0)
我知道这已经过时了,但我想这样做,在我看来,我发现了一个略微改进的投掷答案解决方案。只是暂时阻止错误消息并稍后使用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');