我有一个全局错误处理程序,因此可以捕获JavaScript中的错误并将其通过AJAX发布到我的服务器。看起来像:
window.addEventListener('error', function(event) {
// pull error info from event
// post to server via AJAX
});
在某些时候效果很好。但是,我收到很多错误通知,其中消息为Script error
,堆栈为undefined
,行和列为0
。
我的JavaScript包位于CDN上,URL与实际网站的URL不同,因此我在crossorigin="anonymous"
元素中添加了<script>
属性,并更新了CDN以添加响应标头{{1 }}。这减少了无信息的Access-Control-Allow-Origin: *
通知的数量,但并没有消除所有通知。
我已阅读到任何偶然引发错误的回调都将产生Script error
通知,因为该窗口无法使用该堆栈。我想尝试用try / catch包装回调,在catch块中重新抛出错误-希望窗口随后可以访问有关错误的有用信息。
但是,我无法复制Script error
。我在几个不同的click事件处理程序中添加了一行乱码,当触发这些处理程序时,我的全局错误处理程序将捕获包含所有堆栈信息的错误。
首先,如何在回调中重现普通的Script error
?
第二,我包装回叫的计划是捕获有意义的错误信息的正确方法吗?