从Internet Explorer错误对象中检索行号

时间:2012-05-22 22:30:45

标签: javascript internet-explorer

有没有办法从Internet Explorer 7/8错误对象中检索行号?

我只知道.message,.description和.number属性。

我已经搜索了一下,在.stack(http://msdn.microsoft.com/en-us/library/hh699850(v=vs.94).aspx)上发现了一篇MSDN文章,但即使使用他们自己的示例代码也不会返回行号:

http://jsfiddle.net/LWevS/

1 个答案:

答案 0 :(得分:6)

我挖了一些,发现可以使用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之外的所有浏览器。如果要记录在客户端浏览器上生成的错误,那么这是一个很棒的运行时调试器。

http://stacktracejs.com/