Ind*_*ial 282 javascript
是否有可能以某种方式停止或终止JavaScript,以防止任何进一步的基于JavaScript的执行发生,而无需重新加载浏览器?
我在想exit()PHP 中的JavaScript等价物.
小智 495
简短回答:
throw new Error("Something went badly wrong!");
Run Code Online (Sandbox Code Playgroud)
如果您想了解更多,请继续阅读.
debugger;代码中的表达式将停止页面执行,然后浏览器的开发人员工具将允许您在页面冻结时查看页面状态.
而不是试图阻止一切,让你的代码处理错误.Exception通过谷歌搜索阅读s.它们是一种智能的方法,可让您的代码"跳转"到错误处理过程,而无需使用繁琐的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!");
Run Code Online (Sandbox Code Playgroud)
确保你没有catch()能够捕获任何异常的块; 在这种情况下修改它们以重新抛出"FatalError"异常:
catch(exc){ if(exc instanceof FatalError) throw exc; else /* current code here */ }
Run Code Online (Sandbox Code Playgroud)
return; 将终止当前函数的执行流程.
if(someEventHappened) return; // Will prevent subsequent code from being executed
alert("This alert will never be shown.");
Run Code Online (Sandbox Code Playgroud)
注意:return;仅在函数内有效.
...您可能想知道如何停止异步代码.它完成了clearTimeout和clearInterval.最后,要停止XHR(Ajax)请求,您可以使用该xhrObj.abort()方法(也可以在jQuery中使用).
Bar*_*xto 110
你可以写一个JavaScript拼写错误:D(在这里开箱即用)
thisFunctionDoesNotExistAndWasCreatedWithTheOnlyPurposeOfStopJavascriptExecutionOfAllTypesIncludingCatchAndAnyArbitraryWeirdScenario();
Run Code Online (Sandbox Code Playgroud)
或类似的东西:
new new
Run Code Online (Sandbox Code Playgroud)
Mik*_*y G 32
像这样的东西可能会起作用:
function javascript_abort()
{
throw new Error('This is not an error. This is just to abort javascript');
}
Run Code Online (Sandbox Code Playgroud)
取自这里:
小智 23
没有.
即使你抛出一个异常,它也只会杀死当前的事件循环.传递给setTimeout或DOM/XMLHttpRequest事件处理程序的回调仍将在它们到来时运行.
use*_*569 17
我做:
setTimeout(function() { debugger; }, 5000)
Run Code Online (Sandbox Code Playgroud)
这样我有5秒钟与UI交互,然后停止.我使用的Las时间是当我需要保持自定义工具提示可见时,做一些样式更改.
Ton*_*ony 14
我在用
return false;
如果我想从JavaScript中止进一步向下运行.
您可以return在函数中提前调用,至少该函数将停止运行.您也可以使用它throw ''来导致错误并停止当前进程.但这些并不能阻止一切.setTimeout并且setInterval可以分别使得在一个时间间隔上运行的延迟函数和函数.那些将继续运行.Javascript事件也将继续像往常一样工作.
我知道这已经过时了,但我想这样做,并且在我看来,我发现了一个稍微改进的抛出答案的解决方案。只是暂时抑制错误消息并稍后使用 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');
Run Code Online (Sandbox Code Playgroud)