有没有办法从 Internet Explorer 7/8 错误对象中检索行号?
我只知道 .message、.description 和 .number 属性。
我搜索了一下,发现了一篇关于 .stack 的 MSDN 文章(http://msdn.microsoft.com/en-us/library/hh699850(v=vs.94).aspx),但即使使用他们自己的例子代码不返回行号:
有没有办法从 Internet Explorer 7/8 错误对象中检索行号?
我只知道 .message、.description 和 .number 属性。
我搜索了一下,发现了一篇关于 .stack 的 MSDN 文章(http://msdn.microsoft.com/en-us/library/hh699850(v=vs.94).aspx),但即使使用他们自己的例子代码不返回行号:
我又挖了一些,发现可以使用 window.onerror 在 IE 中检索行号。它不是来自 Error 对象本身,而是一个不错的解决方法:
function BadFunction(){
This.badcode.willnot.work = 1000
}
function ForceError(msg, url, lno) {
alert("Error Occurred! Handled by Generic Error Handler" + "\n" +
"Error: " + msg + "\n" + "URL: " + url + "\n" +
"Line Number: " + lno);
return true;
}
window.onerror = ForceError;
此方法要求错误冒泡到窗口。如果您的代码中有 try/catch,则需要重新抛出错误,以便它可以冒泡。
在研究这个问题的解决方案时,我还在 GitHub 上遇到了 StackTraceJS。他们的堆栈跟踪脚本适用于除 Internet Explorer 之外的所有浏览器。如果您想记录客户端浏览器上产生的错误,这是一个很棒的运行时调试器。