代码之家  ›  专栏  ›  技术社区  ›  Cine

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

  •  7
  • Cine  · 技术社区  · 15 年前

    作为大多数生产环境,如果我们的Web应用程序出错,我们会设置一些东西来向我们发送通知。当然,问题是这只涉及服务器端的错误。

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

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

    2 回复  |  直到 13 年前
        1
  •  8
  •   Juraj Blahunka    15 年前

    您可以使用 窗口.onerror 事件

    在处理程序内部,向服务器端的错误矿工发出Ajax请求并记录错误。

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

    并非所有浏览器都支持hower window.onerror,jquery可以用它自己的事件处理程序来填补这个空白:window.onerror和 jQuery(window).error 应该足够了

        2
  •  7
  •   bobince    15 年前

    对于客户端的javascript错误,您可以做的不多。你可以设陷阱 window.onerror 并将其用于Ajax返回报告,但:

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

    (B)你很可能会被你做不到的错误报告淹没,由于缺乏信息,几乎没有调试的可能。在一个只有你认识的客户才能访问的应用程序上,你也许可以摆脱它,但是在一个公共访问站点上,很多错误都是假的。由以下因素引起的物质:

    • 与承载脚本或Ajax的站点的连接失败或被防火墙阻止;

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

    • 损坏的浏览器附加组件、类似于Greasemonkey的脚本、过滤代理和伪造的互联网安全工具扰乱了您的代码;

    • 行为怪异的不受支持的代理,如移动浏览器(尤其是令人震惊的IEMobile),如果有访问权限,还包括自动浏览器机器人程序;

    • 很多错误都是由第三方内容(如广告)引起的。

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

    最好使用渐进式增强,以确保您的应用程序在JavaScript失败时仍能正常工作。

    推荐文章