【问题标题】:Automatically reporting javascript errors to the developer自动向开发者报告 javascript 错误
【发布时间】:2010-04-12 10:40:12
【问题描述】:

作为大多数生产环境,我们已经设置了一些东西,以便在我们的 Web 应用程序出现错误时向我们发送通知。问题当然是这仅涵盖服务器端的错误。

我向社区提出的问题是:您如何处理客户端错误,尤其是在 javascript 中?

还有其他服务质量问题,例如处理速度慢和其他可能由客户端机器引起的问题?

【问题讨论】:

    标签: javascript error-handling frameworks usability


    【解决方案1】:

    您可以使用 window.onerror 事件处理客户端 JavaScript 错误

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

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

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

    【讨论】:

    • 只要确保 onerror 处理代码是防弹的 ;-)
    【解决方案2】:

    对于客户端的 JavaScript 错误,您无能为力。您可以捕获 window.onerror 并使用它来 AJAX 报告回来,但是:

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

    (b) 您可能会被错误报告所淹没,您无能为力,由于缺乏信息,几乎无法进行调试。您可能能够在仅由您认识的客户访问的应用程序上侥幸逃脱,但在公共访问站点上,很多错误都是虚假的。由以下因素引起的东西:

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

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

    • 损坏的浏览器插件、类似 GreaseMonkey 的脚本、过滤代理和伪造的“互联网安全”工具会干扰您的代码;

    • 行为异常的不受支持的代理,例如移动浏览器(尤其是令人震惊的 IEMobile),以及如果它们有权访问的自动浏览器机器人;

    • 许多由第三方内容(如广告)引起的错误(如果有的话)。

    同样,对于一个使用受限的应用程序,您可以直接联系遇到问题的任何用户,它可能有用,但对于公众使用的网站,它是行不通的。

    最好使用“渐进式增强”来确保您的应用程序在 JavaScript 失败时仍然可以工作。

    【讨论】:

    • 进行服务质量检查的重点是弄清楚某些常见问题发生的频率,然后首先关注这些问题。如果我们连这个都没有,那你就是在盲目射击。我还从服务器端获得了大量的 1-of,包括随机死锁、人们在请求中间关闭连接以及大量其他独特的事情。
    猜你喜欢
    • 2014-06-24
    • 2014-04-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2010-11-14
    • 2011-04-14
    • 1970-01-01
    • 2018-11-09
    相关资源
    最近更新 更多