Javascript获取窗口错误代码

Javascript get Window Error Code

本文关键字:错误代码 窗口 获取 Javascript      更新时间:2023-09-26

我正试图弄清楚是否有一段Javascript可以用来获取窗口中的当前Javascript错误(如果有的话(。

在内部,我们有几个网站,来自各地的用户都在使用。他们中的一些人使用与我们相同的硬件和系统,而其他人则使用不同环境的用户虚拟机。

简而言之,我们在工具不起作用的地方遇到了很多支持问题,我们必须解释如何在IE中检查JS错误。

我想在他们的工具栏上制作一个Bookmarklet,当他们遇到问题时,它会检查是否有窗口错误,然后我可以用它做点什么。

我知道有window.onerror=function(msg, url, linenumber){},但那是发生错误的时候。我正在寻找一种方法,当用户点击bookmarklet时,可以随时检查错误。

onerror不够好。它会给您一条消息、一个文件和一个行号。没有堆栈跟踪,没有参数检查等。它还可以捕获由第三方代码引发的错误,如有缺陷的Skype插件。

您想要做的是将所有代码封装在自己的自定义错误处理程序函数中。

wrap_try_catch(function () {
    do_stuff();
})();

跨异步函数的try-catch不起作用,所以请确保包装所有回调:

add_event(obj, "click", function () {});
function add_event(obj, what, callback) {
    obj.addEventListener(what, wrap_try_catch(callback));
}

类似地,如果您曾经使用过setTimeoutsetInterval,那么您将希望包装它们。

如果你很聪明,你甚至可以弄清楚如何通过异步调用捕获堆栈争用,这样你就可以看到xmlhttprequest是从哪里发起的(而不是将onreadystatechange视为源(。


使用这种方法,您可以通过让catch实现错误报告请求来实现主动错误报告。您可以将错误摘要消息发送回服务器,以便记录所有错误。

总是包装这些函数的影响是相当大的,尤其是如果你还没有这样设置的话。这当然是可能的。


即使在非常旧的IE版本中也可以使用。我们以前有一个版本可以在IE6中使用。我们现在支持的最低版本是IE9,所以我们可以使用更多功能。

我认为IE支持与IE10一样的堆栈竞争。Chrome和Firefox一直支持它。

bookmarklet似乎不是最好的方法,因为当用户点击它时,就太晚了。。。错误已经发生。

除非错误改变了页面上某些内容的状态,否则您可以在bookmarklet中依赖这些内容。。。

我认为处理这个问题的最好方法是在它发生之前,这意味着在它发生的页面上处理它。。。

错误报告应该是应用程序的一部分