脚本调试 - Javascript 错误事件属性中的行和列
我已经决定,有些错误我不想让浏览器错误处理程序处理。但我仍然想知道它们。在我的实际代码中,我有一个函数将错误存储在一个隐藏的元素中,并通过 Ajax 提交到数据库。以下是我 try 块的简化版本:
try
{
newValueEvaled = eval(newValue);
}catch(err)
{
alert("Error caught: Line " + err.lineNumber + ((err.columnNumber != undefined)?', Column:' + err.columnNumber:"") + '\n' + err.message);
}
我也想要 columnNumber。目前它从未出现过,但浏览器的错误控制台 somehow 可以访问它。有人能告诉我如何也能访问它吗?
答案#1
我几乎可以肯定,从在页面中运行的 JavaScript 获取错误列号是不可能的。Firebug/WebKit 控制台/IE 控制台可以访问提供比页面中运行的代码更多调用堆栈信息的浏览器内部对象。
答案#2
您可以使用自定义错误处理函数访问错误行,甚至可能访问列:
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 上运行)中不可用。
