2

我知道如果我们不想调用浏览器 javascript 错误处理程序,window.onerror 应该返回的内容之间存在一些不一致。

由于我们的网站是相当重的 ajax,我们需要确保浏览器的错误处理程序永远不会被调用。

我的意思是:

window.onerror=function(){
    console.log('error captured');
    return false;
}

显然,“return false”部分因浏览器而异。

有谁知道我们可以在某个地方找到如何处理浏览器到浏览器的列表,比如 quirksmode / caniuse?

或者如果列表相当小,是否有人知道需要返回的值来抑制每个浏览器的错误处理程序?

谢谢!

4

1 回答 1

1

你有你的工作为你完成。

首先,你true从你的onerror处理程序返回,而不是false......把它想象成浏览器在询问你是否应该停止。

接下来,有一些浏览器的一些版本正好在这个领域。它们有时不像宣传的那样工作,似乎没有人知道为什么。我见过的最聪明的答案是关于调用堆栈大小变得太大......这对我来说听起来不错!

也就是说,这应该可以解决问题:

<script>
function stopErrors() {
    return false;
}
window.onerror = stopErrors;
</script>

来自http://api.jquery.com/error/的一些关键点:

注意:不应将 jQuery 错误事件处理程序附加到窗口对象。发生脚本错误时,浏览器会触发窗口的错误事件。但是,窗口错误事件接收不同的参数并且具有与传统事件处理程序不同的返回值要求。请改用 window.onerror。

必须在浏览器触发错误事件之前附加事件处理程序......此外,当页面在本地提供时,错误事件可能无法正确触发;error 依赖于 HTTP 状态码,如果 URL 使用 file: 协议,一般不会触发。

于 2013-03-20T12:23:48.383 回答