在大多数生产环境中,如果我们的Web应用程序出现错误,我们会设置一些通知给我们.问题在于,这仅涵盖服务器端的错误.
我对社区的问题是:你在做什么关于客户端错误,特别是在javascript中?
那么其他服务质量问题呢,比如处理速度慢和客户机可能导致的其他问题?
您可以使用window.onerror事件处理客户端JavaScript错误
在处理程序内部向服务器端错误挖掘器发出Ajax请求并记录错误.
http://www.javascriptkit.com/javatutors/error.shtml
所有浏览器都不支持Hovewer window.onerror,jQuery可以用自己的事件处理程序填补空白:window.onerror和jQuery(window)的组合.error应该足够了
在客户端,你可以做很多关于JavaScript错误的事情.您可以捕获window.onerror
并使用它来回传AJAX报告,但是:
(a)WebKit或Opera不支持它.要捕获所有错误,您必须将每个直接执行,事件和超时入口点包装在一个中try { ... }
,这非常混乱,并且比onerror
处理程序提供的信息更少.
(b)您可能会被错误报告所淹没,您无法做任何事情,由于缺乏信息而几乎无法进行调试.您可能能够在只有您认识的客户访问的应用程序中使用它,但在公共访问站点上,很多错误都是虚假的.由以下因素引起的东西:
与托管脚本或AJAX的站点的连接失败或被防火墙阻止;
意外的安全设置(浏览器可以选择阻止许多接口);
破坏的浏览器插件,类似GreaseMonkey的脚本,过滤代理和虚假的"Internet Security"工具弄乱你的代码;
不受支持的代理行为奇怪,如移动浏览器(尤其是令人震惊的IEMobile),如果有访问权限,则自动浏览器机器人;
如果你有任何错误,第三方内容如广告引起的许多错误.
同样,对于一个有限使用的应用程序,您可以直接联系任何遇到问题的用户,它可能是有用的,但对于一般公众使用的站点,它是一个非首发.
最好使用"渐进增强"来确保您的应用程序在JavaScript失败时仍然有效.