【问题标题】:If I override window.onerror in javascript should I return true or false?如果我在javascript中覆盖window.onerror,我应该返回true还是false?
【发布时间】:2011-12-26 14:22:12
【问题描述】:

我想记录 JavaScript 错误,所以我像这样覆盖 window.onerror

window.onerror = function(message, file, lineNumber) {
    var browser_ = encodeURI(navigator.appVersion);
    var error_ = encodeURI("msg:"+ message + "\n\tfile:"+file+"\n\tln:"+lineNumber);
    var user_ = encodeURI("");

    ...

    return false;
}

我看到有些人返回true,有些人返回false。哪个是对的,为什么?一篇文章提到了你必须返回 true 否则 Firefox 会以自己的方式处理错误。什么??

【问题讨论】:

    标签: javascript error-handling


    【解决方案1】:

    来自MDNwindow.onerror

    当函数返回true 时,这会阻止触发默认事件处理程序。

    另见铬Issue 92062:

    在 Chrome 中,从 window.onerror 返回 true 允许错误传播,返回 false 会抑制它。

    这与 Firefox 和 IE 中的行为相反,返回 'true' 会抑制错误,但返回 false 会传播错误。

    注意:上述问题已修复,所有浏览器的行为现在都与 MDN 上所述相同。

    【讨论】:

    • Chrome 表面上的行为似乎是我期望它工作的方式......“错误?错误!”
    • @Tomasz 你没有回答我应该做什么!另外,您希望在哪里传播错误的示例是什么?我想这是一个新问题!
    • Opera 11.60 的行为类似于 Chrome。
    • 我刚刚在 FF 中尝试过,在 Chrome 中它们的行为彼此相反。 “阻止触发默认事件处理程序”的效果是开发工具要么报告错误,要么不报告。
    • 这似乎不再正确(?)。在 Chrome 和 Firefox 中返回 true 会停止处理程序传播。
    猜你喜欢
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 2014-01-28
    • 1970-01-01
    • 2013-01-14
    相关资源
    最近更新 更多