如何在Chrome扩展程序内容脚本中获取错误堆栈跟踪?

巴布申

有一个Google Chrome扩展程序content script用于处理所有标签页上发生的JS错误。但是问题在于,没有一种获取错误堆栈跟踪的常用方法不起作用。

例如,content scriptChrome扩展中有一个代码

window.addEventListener('error', function(event) {
    console.log(event.error.stack); // event.error will be null
}, false);

如果我在网页内调用此代码,event.error则将包含Error具有stack属性的对象

尝试使用以下方法获取堆栈跟踪的相同问题:

console.log((new Error()).stack));

有人知道在content scriptChrome扩展程序内部获取错误堆栈跟踪的某些工作问题吗?

错误堆栈跟踪必须以stringArray方式接收,这意味着不像JS控制台中的调用那样输出console.trace()

如何繁殖

  1. 下载https://mega.co.nz/#!ENw00YAC!92gBZEoLCO9jPsWyKht4dbjYyo0Zk-PU5YAj0h88-3Q
  2. 解压jzen.zip到某个/jsen文件夹
  3. chrome://extensions在您的Google Chrome浏览器中打开,启用Developer mode http://i.imgur.com/5x5D6NP.png
  4. 单击Load unpacked extension按钮并选择/jsen文件夹路径
  5. 打开/jsen/content.js文件并添加console.log('JSEN', e.error.stack);到里面window.addEventListener('error', function(e) {
  6. 转到http://xpart.ru/_share/js.htm并在JS控制台中查看结果(Ctrl + Shift + J)
  7. 尝试编辑/jsen/content.js以获取正确的错误跟踪
  8. 要重新初始化Chrome扩展程序源代码,请单击http://i.imgur.com/SjFgkHA.png
连接

如您所述error,事件对象属性是null在Content Script上下文中捕获事件时属性,但是在网页上下文中捕获时具有必需的信息。因此,解决方案是在网页上下文中捕获事件,并使用消息传递将其传递到内容脚本。

// This code will be injected to run in webpage context
function codeToInject() {
    window.addEventListener('error', function(e) {
        var error = {
            stack: e.error.stack
            // Add here any other properties you need, like e.filename, etc...
        };
        document.dispatchEvent(new CustomEvent('ReportError', {detail:error}));
    });
}

document.addEventListener('ReportError', function(e) {
    console.log('CONTENT SCRIPT', e.detail.stack);
});

//Inject code
var script = document.createElement('script');
script.textContent = '(' + codeToInject + '())';
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);

使用的技术在以下内容中进行了描述:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Chrome扩展程序中获取发布数据

来自分类Dev

如何自动测试Chrome扩展程序中的内容脚本?

来自分类Dev

在Chrome扩展程序中停止内容脚本

来自分类Dev

从Chrome扩展程序中的内容脚本传递消息

来自分类Dev

如何在chrome扩展内容脚本中确定CSS范围

来自分类Dev

如何在Chrome扩展程序中从localstorage读写div的内容?

来自分类Dev

如何从Clojure期货中的错误中获取堆栈跟踪?

来自分类Dev

如何在Chrome扩展程序的内容脚本之间重复使用代码?

来自分类Dev

如何在symfony2中以JSON格式获取错误和堆栈跟踪?

来自分类Dev

Chrome扩展程序:如何全局捕获/处理内容脚本错误?

来自分类Dev

如何在Chrome扩展程序开发中获取选定的文本?

来自分类Dev

Chrome扩展程序注入脚本获取错误

来自分类Dev

chrome扩展程序中的“拒绝加载脚本”错误

来自分类Dev

如何在Chrome扩展程序中动态运行后台脚本?

来自分类Dev

在chrome扩展程序中,如何使用内容脚本注入Vue页面

来自分类Dev

如何选择何时启动Chrome扩展程序的内容脚本?

来自分类Dev

Chrome扩展程序:如何获取网页以访问由内容脚本定义的功能?

来自分类Dev

如何在Chrome扩展程序内容脚本中获取错误堆栈跟踪?

来自分类Dev

从Chrome扩展程序中的内容脚本传递消息

来自分类Dev

Chrome扩展程序:内容脚本注入时如何解决“不允许加载本地资源”错误

来自分类Dev

如何在Chrome扩展程序中从localstorage读写div的内容?

来自分类Dev

如何在symfony2中以JSON格式获取错误和堆栈跟踪?

来自分类Dev

Chrome扩展程序不显示内容脚本中的数据

来自分类Dev

如何通过内容脚本在Chrome扩展程序中设置标志文本?

来自分类Dev

Chrome扩展程序内容脚本中的Polymer元素

来自分类Dev

Chrome扩展程序注入脚本获取错误

来自分类Dev

如何取消Chrome扩展程序内容脚本中的事件绑定?

来自分类Dev

从注入的脚本中获取Chrome扩展程序调用函数

来自分类Dev

如何在Chrome扩展程序中动态运行后台脚本?

Related 相关文章

  1. 1

    如何在Chrome扩展程序中获取发布数据

  2. 2

    如何自动测试Chrome扩展程序中的内容脚本?

  3. 3

    在Chrome扩展程序中停止内容脚本

  4. 4

    从Chrome扩展程序中的内容脚本传递消息

  5. 5

    如何在chrome扩展内容脚本中确定CSS范围

  6. 6

    如何在Chrome扩展程序中从localstorage读写div的内容?

  7. 7

    如何从Clojure期货中的错误中获取堆栈跟踪?

  8. 8

    如何在Chrome扩展程序的内容脚本之间重复使用代码?

  9. 9

    如何在symfony2中以JSON格式获取错误和堆栈跟踪?

  10. 10

    Chrome扩展程序:如何全局捕获/处理内容脚本错误?

  11. 11

    如何在Chrome扩展程序开发中获取选定的文本?

  12. 12

    Chrome扩展程序注入脚本获取错误

  13. 13

    chrome扩展程序中的“拒绝加载脚本”错误

  14. 14

    如何在Chrome扩展程序中动态运行后台脚本?

  15. 15

    在chrome扩展程序中,如何使用内容脚本注入Vue页面

  16. 16

    如何选择何时启动Chrome扩展程序的内容脚本?

  17. 17

    Chrome扩展程序:如何获取网页以访问由内容脚本定义的功能?

  18. 18

    如何在Chrome扩展程序内容脚本中获取错误堆栈跟踪?

  19. 19

    从Chrome扩展程序中的内容脚本传递消息

  20. 20

    Chrome扩展程序:内容脚本注入时如何解决“不允许加载本地资源”错误

  21. 21

    如何在Chrome扩展程序中从localstorage读写div的内容?

  22. 22

    如何在symfony2中以JSON格式获取错误和堆栈跟踪?

  23. 23

    Chrome扩展程序不显示内容脚本中的数据

  24. 24

    如何通过内容脚本在Chrome扩展程序中设置标志文本?

  25. 25

    Chrome扩展程序内容脚本中的Polymer元素

  26. 26

    Chrome扩展程序注入脚本获取错误

  27. 27

    如何取消Chrome扩展程序内容脚本中的事件绑定?

  28. 28

    从注入的脚本中获取Chrome扩展程序调用函数

  29. 29

    如何在Chrome扩展程序中动态运行后台脚本?

热门标签

归档