在大多数生产环境中,如果我们的网络应用程序出现错误,我们会设置一些通知给我们。问题在于,这只包括服务器端的错误。
我对社区的问题是:你在做什么客户端错误,特别是在javascript中?
那么其他服务质量问题呢,比如处理速度缓慢以及客户机可能导致的其他问题呢?
答案 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失败时仍然有效。