JavaScript:如何在弹出警示框中显示脚本错误?

45

我想在弹出警报中显示脚本错误,而不是在浏览器控制台中显示。

window.onerror = function() {
  var message = /* get error messages and put them here */;
  alert(message);
  return true;
};

3
请注意,“onerror”事件仅受IE和Mozilla支持。 - Christian C. Salvadó
1
那么有跨浏览器的解决方案吗?我的意思是,是否有类似于 Webkit 支持的函数? - powerboy
1
你的意思是除了IE和Mozilla还有其他浏览器吗?天啊!我需要多出去走走 :) - DVK
2
实际上,它(希望很快)将在WebKit中得到支持-请参见http://www.phwinfo.com/forum/comp-lang-javascript/401318-window-onerror-chrome.html#post1867841。 - DVK
是的!但我有另一个问题。似乎onerror只支持这三个参数。没有办法捕获特定名称的错误。 - powerboy
onerror 对于调试非常有用。但是在生产代码中不应该使用它。在脚本正常运行过程中捕获错误,应该使用异常。 - bobince
5个回答

66

是的,那是正确的方式。

参见这里的相关文献:

http://www.javascriptkit.com/javatutors/error2.shtml

以及如何查看更多错误详细信息的解释:

http://www.javascriptkit.com/javatutors/error3.shtml

他们的例子:

window.onerror = function(msg, url, linenumber) {
    alert('Error message: '+msg+'\nURL: '+url+'\nLine Number: '+linenumber);
    return true;
}

如果您希望在单个弹出窗口中显示错误列表,这会比较棘手。

由于错误一个接一个地发生,您需要执行以下操作:

  • 使用 window.onerror 处理程序将错误详细信息存储在某个数组中
  • 定期检查该数组 - 可以通过计时器或每第 N 次调用 window.onerror 处理程序来实现,也可以同时进行。

    当进行检查时,请处理整个数组,按所需显示其内容,并清空数组。


3
谢谢!那么回答就是:window.onerror = function(message) { alert(message); return true; };刚测试过了! - powerboy

3

如果有人希望与jQuery一起使用它:

$(window).on("error", function(evt) {

    console.log("jQuery error event:", evt);
    var e = evt.originalEvent; // get the javascript event
    console.log("original event:", e);
    if (e.message) { 
        alert("Error:\n\t" + e.message + "\nLine:\n\t" + e.lineno + "\nFile:\n\t" + e.filename);
    } else {
        alert("Error:\n\t" + e.type + "\nElement:\n\t" + (e.srcElement || e.target));
    }
});


0

-1
<script>$(window).on("error", function(evt) {

console.log("jQuery error event:", evt);
var e = evt.originalEvent; // get the javascript event
console.log("original event:", e);
if (e.message) { 
    alert("Error:\n\t" + e.message + "\nLine:\n\t" + e.lineno + "\nFile:\n\t" + e.filename);
} else {
    alert("Error:\n\t" + e.type + "\nElement:\n\t" + (e.srcElement || e.target));
}
});
</script>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接