自动向开发人员报告javascript错误

时间:2010-04-12 10:40:12

标签: javascript error-handling frameworks usability

在大多数生产环境中,如果我们的网络应用程序出现错误,我们会设置一些通知给我们。问题在于,这只包括服务器端的错误。

我对社区的问题是:你在做什么客户端错误,特别是在javascript中?

那么其他服务质量问题呢,比如处理速度缓慢以及客户机可能导致的其他问题呢?

2 个答案:

答案 0 :(得分:8)

您可以使用 window.onerror 事件

处理客户端JavaScript错误

在处理程序内部向服务器端错误挖掘器发出Ajax请求并记录错误。

http://www.javascriptkit.com/javatutors/error.shtml

所有浏览器都不支持Hovewer window.onerror,jQuery可以用自己的事件处理程序填补空白:window.onerror和jQuery(window).error的组合就足够了

答案 1 :(得分:7)

在客户端,你可以做很多关于JavaScript错误的事情。您可以捕获window.onerror并将其用于AJAX报告,但是:

(a)在WebKit或Opera中不支持它。要捕获所有错误,您必须在try { ... }中包装每个直接执行,事件和超时入口点,这非常混乱,并且比onerror处理程序提供的信息更少。

(b)您可能会被错误报告所淹没,您无法做任何事情,由于缺乏信息而几乎无法进行调试。您可能能够在只有您认识的客户访问的应用程序中使用它,但在公共访问站点上,很多错误都是虚假的。由以下因素引起的东西:

  • 与托管脚本或AJAX的网站连接失败或被防火墙阻止;

  • 意外的安全设置(浏览器可以选择阻止任意接口);

  • 破坏了浏览器加载项,类似GreaseMonkey的脚本,过滤代理以及伪造“Internet Security”工具,弄乱了您的代码;

  • 不支持的代理行为奇怪,如移动浏览器(尤其是令人震惊的IEMobile),如果他们有权访问,则自动浏览器机器人;

  • 由广告等第三方内容引起的许多错误,如果您有任何错误。

同样,对于有限使用的应用程序,您可以直接联系任何遇到问题的用户,它可能会有用,但对于公众使用的站点来说,这是一个非首发。

最好使用“渐进增强”来确保您的应用程序在JavaScript失败时仍然有效。