Javascript 错误事件属性中的行和列
Posted
技术标签:
【中文标题】Javascript 错误事件属性中的行和列【英文标题】:Line and column in Javascript Error event attributes 【发布时间】:2011-08-19 15:12:09 【问题描述】:我决定有一些错误我不想转到浏览器错误处理程序。但我仍然想了解他们。在我的实际代码中,我有一个函数将错误存储在隐藏元素中,然后 ajax 将它们提交到数据库。以下是我的 try 块的简化版本:
try
newValueEvaled = eval(newValue);
catch(err)
alert("Error caught: Line " + err.lineNumber + ((err.columnNumber != undefined)?', Column:' + err.columnNumber:"") + '\n' + err.message);
我也想要 columnNumber。目前它从不存在,但浏览器错误控制台以某种方式可以访问它。谁能告诉我如何才能访问它?
【问题讨论】:
呃,你为什么要这样做?进入浏览器的错误允许本机浏览器、WebDeveloper 扩展、FireBug 扩展向您显示相同的信息……通常包含更多信息,并且不会阻止脚本。 .lineNumber 是一个仅限 Firefox 的扩展。 @Rudu 这个想法是通过一个简单的 ajax 请求生成所有 javascript 错误的日志。错误日志只有在它们具体时才有用,因此包括这样的数据才是重点。 如果这成为标准会很好developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 【参考方案1】:您可以使用自定义错误处理函数访问错误行和列:
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 上运行)上不可用。
【讨论】:
Mobile Safari(至少在 ios 8 中)也支持列。【参考方案2】:我几乎可以肯定,无法从页面中运行的 JavaScript 获取错误列号。 Firebug/WebKit 控制台/IE 控制台可以访问内部浏览器对象,这些对象提供有关调用堆栈的更多信息,而不是页面内运行的代码可用的信息。
【讨论】:
根据 Mozilla 文档 (developer.mozilla.org/en/JavaScript/Reference/Global_Objects/…),Error 对象不包含任何列信息。但是,我仍然认为必须有某种方法可以使这些数据可用于 Javascript。也许是一个插件? 我想可以编写一个插件来提供这个。快速谷歌搜索表明它不存在。可能是一个有趣的项目?以上是关于Javascript 错误事件属性中的行和列的主要内容,如果未能解决你的问题,请参考以下文章