我设置了未捕获的异常处理程序 window.error = function(message, ...) {...}
Chrome 扩展的内容脚本 JS 文件之一中的处理程序。目的是捕获扩展中的所有此类错误(它的内容脚本 Javascript 文件)并将它们报告给开发人员。但是我总是收到消息“脚本错误”(发生在第 1 行),而不是真正的错误消息和堆栈跟踪。我怎样才能得到真正的错误和堆栈跟踪?
这是我当时的发现。这是因为 CORS 保护,如果发生错误的脚本与加载脚本的文档不是来自同一源,则默认情况下会清理错误的内容。 Chrome 自版本 30 开始支持绕过此保护("if the script is served with appropriate 'Access-Control-Allow-Origin' headers that
grant the loading document access to the script's contents")。但是,如果内容脚本不是由 HTTP 提供而是在扩展的 list 中指定的,我该如何应用该绕过?出于同样的原因,我不能使用 <script>
的 crossorigin 属性。 .
我还怀疑它可以通过内容安全警察(content_security_policy
list 字段)来完成,但我还不能。
我知道可以通过阅读 Chrome 资源找到答案,但我希望有人会告诉我,我不需要阅读它们。
最佳答案
除了等待 http://crbug.com/225513 之外别无他法待修复
关于javascript - 如何使 Chrome 扩展程序的未捕获异常处理程序工作(由于 CORS 保护而不起作用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26934511/