【发布时间】:2013-12-02 08:16:25
【问题描述】:
有一个Google Chrome extension 和content script 可以处理所有标签页上发生的JS 错误。但问题是,没有一种常用的获取错误堆栈跟踪的方法不起作用。
比如Chrome扩展的content script中有一段代码:
window.addEventListener('error', function(event) {
console.log(event.error.stack); // event.error will be null
}, false);
如果我在网页中调用此代码,那么event.error 将包含具有stack 属性的Error 对象。
尝试使用以下方法获取堆栈跟踪时遇到同样的问题:
console.log((new Error()).stack));
是否有人知道在 Chrome 扩展的 content script 中获取错误堆栈跟踪的一些工作问题?
错误堆栈跟踪必须以string 或Array 的形式接收,这意味着不仅仅是通过调用console.trace() 在JS 控制台中的某些输出。
如何重现:
- 下载https://mega.co.nz/#!ENw00YAC!92gBZEoLCO9jPsWyKht4dbjYyo0Zk-PU5YAj0h88-3Q
- 将
jzen.zip解压到某个/jsen文件夹中 - 在您的谷歌浏览器中打开
chrome://extensions,启用Developer modehttp://i.imgur.com/5x5D6NP.png - 点击
Load unpacked extension按钮并选择/jsen文件夹的路径 - 打开
/jsen/content.js文件并在window.addEventListener('error', function(e) {中添加console.log('JSEN', e.error.stack); - 转到http://xpart.ru/_share/js.htm 并在 JS 控制台中查看结果(Ctrl+Shift+J)
- 尝试编辑
/jsen/content.js以获得正确的错误跟踪 - 要重新初始化Chrome扩展源代码点击http://i.imgur.com/SjFgkHA.png
【问题讨论】:
-
您应该提到您希望将堆栈跟踪作为字符串,将其显示在控制台中是不够的。这个问题有点误导。
-
@Tibos 感谢您的评论。我已经更新了问题。
标签: javascript google-chrome google-chrome-extension