Javascript获取窗口错误代码
Javascript get Window Error Code
我正试图弄清楚是否有一段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));
}
类似地,如果您曾经使用过setTimeout
和setInterval
,那么您将希望包装它们。
如果你很聪明,你甚至可以弄清楚如何通过异步调用捕获堆栈争用,这样你就可以看到xmlhttprequest是从哪里发起的(而不是将onreadystatechange
视为源(。
使用这种方法,您可以通过让catch
实现错误报告请求来实现主动错误报告。您可以将错误摘要消息发送回服务器,以便记录所有错误。
总是包装这些函数的影响是相当大的,尤其是如果你还没有这样设置的话。这当然是可能的。
即使在非常旧的IE版本中也可以使用。我们以前有一个版本可以在IE6中使用。我们现在支持的最低版本是IE9,所以我们可以使用更多功能。
我认为IE支持与IE10一样的堆栈竞争。Chrome和Firefox一直支持它。
bookmarklet似乎不是最好的方法,因为当用户点击它时,就太晚了。。。错误已经发生。
除非错误改变了页面上某些内容的状态,否则您可以在bookmarklet中依赖这些内容。。。
我认为处理这个问题的最好方法是在它发生之前,这意味着在它发生的页面上处理它。。。
错误报告应该是应用程序的一部分
- 咕噜声.js无法读取文件(错误代码:EISDIR)
- 科尔多瓦指南针 API 给出错误代码 3
- 如何在使用JavascriptCallbackBehavior时引发带有HTTP错误代码的WebFaultExcepti
- 解析错误代码 121
- Ajax get jsonp给出错误代码500“;请求被阻止”;来自MVC应用程序
- ionic http获取到本地文件会给出http错误代码0
- Imacros/jQuery TypeError:无法访问死对象,第 816 行(错误代码:-991)
- 电话差距/网络数据库错误代码说明
- NaN 错误代码有什么问题
- 异常:“远程主机关闭了连接.错误代码为 0x80070057”
- 咕噜声/巴别塔错误:无法写入“dist”文件(错误代码:EISDIR)
- Google Maps API V3 信息窗口错误:“信息窗口未定义”
- 科尔多瓦的文件传输写入错误(代码 1)
- 角度$asyncValidators将错误代码传输到模板
- 接收错误代码 3,http_status空,正文空,异常状态 2
- 运行 grunt.file.copy 返回错误代码:ENOENT
- Parse.com 找不到错误代码:141 函数
- 尝试运行作业时分析错误代码 1 内部错误
- 节点 js 退出状态 8,错误代码 0 在 Mac 上运行
- Javascript获取窗口错误代码