6

我已经决定有一些我不想转到浏览器错误处理程序的错误。但我仍然想了解他们。在我的实际代码中,我有一个函数将错误存储在隐藏元素中,然后 ajax 将它们提交到数据库。以下是我的 try 块的简化版本:

try
{
  newValueEvaled = eval(newValue);
}catch(err)
{
  alert("Error caught: Line " + err.lineNumber + ((err.columnNumber != undefined)?', Column:' + err.columnNumber:"") + '\n' + err.message);
}

我也想要 columnNumber。目前它从不存在,但浏览器错误控制台以某种方式可以访问它。谁能告诉我如何也可以访问它?

4

2 回答 2

3

我几乎可以肯定不可能从页面中运行的 JavaScript 获取错误列号。Firebug/WebKit 控制台/IE 控制台可以访问内部浏览器对象,这些对象提供有关调用堆栈的更多信息,而不是页面内运行的代码可用的信息。

于 2011-05-05T18:42:47.763 回答
3

您可以使用自定义错误处理函数访问错误行和可能的列:

function dumpErrors(error, file, line, column)
{
    alert('Error: ' + error + ', occurred in file: ' + file + ', on line: ' + line + ', at column: ' + (column || 'unknown'));
}
onerror = dumpErrors;

«line» 适用于所有浏览器。对于 «column»,它似乎在最新的 Chrome(30.0+ 版本)上可用,但在 Firefox(17 版,在我的 Linux 上运行)上不可用。

于 2013-11-29T06:33:54.723 回答