【问题标题】:Automatic feedback on JavaScript errorJavaScript 错误自动反馈
【发布时间】:2009-02-13 17:59:58
【问题描述】:

如果在客户端运行 JavaScript 时出现错误(甚至是语法错误),有没有办法获得自动反馈?

我在想这样的事情:

<script src="debugger.js"></script>
<script>
    // some script with an error in it
</script>

每次调试器发现错误时,它都会向服务器发送反馈。

【问题讨论】:

    标签: javascript debugging feedback


    【解决方案1】:

    编辑:我最初误解了你的问题,这应该有效:

    另请注意,这需要在任何可能导致错误的 javascript 之前进行。

    window.onerror = function(msg,u,l)
    {
        txt ="Error: " + msg + "\n";
        txt+="URL: " + u + "\n";
        txt+="Line: " + l + "\n\n";
        //Insert AJAX call that passes data (txt) to server-side script
        return true;
    };
    

    至于语法错误,你不走运。当出现语法错误时,Javascript 就会死掉。根本没办法处理。

    【讨论】:

    • 我也想过。但似乎只有 Firefox 才能做到这一点。当我尝试提醒消息时,Safari 和 Opera 都保持安静。
    • 好吧,也许只是警报不起作用。打印错误消息确实如此。我想就是这样。谢谢。
    • 在 FF 中工作。要让它在 IE 中工作,您必须在 Internet 选项的高级选项卡中禁用脚本调试。我还没有让它在 Chrome 和 Opera 中工作。
    • 也可以使用try/catch块,在catch块中报错。
    • 我刚刚发布了代码,通过向服务器发送错误信息来帮助记录 JavaScript 错误 - thecodepage.com/post/JavaScript-Error-Notifications.aspx
    【解决方案2】:

    一种技术是使用 Ajax 处理Javascript error logging

    每个 javascript 错误都可以在 window.onerror 事件中捕获。我们可以返回 true 或 false,以便我们可以选择用户是否应该看到正常的 javascript 错误对话框。 万一发生 javascript 错误,此脚本将收集有关错误的信息并向页面发送 httprequest,该页面会将 javascript 错误记录到数据库中。

    【讨论】:

    • 我在找那个页面.. +1
    • 感谢您链接到这个有用的功能。我试试看。
    【解决方案3】:

    我不确定语法错误,但可以使用 window.onerror 事件捕获 js 错误。在 google 中搜索“logging errors in javascript”会给你很多结果...

    将 JavaScript 错误记录到 ASP.NET: http://james.newtonking.com/archive/2006/05/02/Logging-JavaScript-Errors-To-ASP.NET.aspx (不幸的是,帖子中的下载链接已损坏)。

    将客户端 JavaScript 错误记录到服务器: http://www.codeproject.com/KB/ajax/logclientsidejserrors2srv.aspx

    JavaScript 错误通知: http://www.thecodepage.com/post/JavaScript-Error-Notifications.aspx

    【讨论】:

      【解决方案4】:

      window.onerror = MyFunction(msg,url,line);

      我们会在标记为 READONLY 的字段中弹出一个包含错误详细信息、浏览器类型(即 navigator.userAgent)等的窗口,并邀请用户提交它们。

      我们有一个“不再显示”复选框,它存储在会话 cookie 中 - 因此,如果他们不断收到错误,则可以禁用弹出窗口。

      尽管我们认为这“非常酷”,但我们收到的报告很少 - 我不相信这是因为我们接近于零运行时错误!

      【讨论】:

        【解决方案5】:

        最好每页只发送一份错误报告。如果您在重复计时器上遇到错误,或者 AJAX 本身递归调用错误,您最终可能会用无用的垃圾填充您的日志。

        另外,请准备好接收由以下原因引起的无法解决的错误:

        • 安全代理欺骗您的代码
        • 来自被阻止站点的脚本
        • 来自扩展的不重要的浏览器 chrome 错误
        • IE Mobile,世界上最差的浏览器

        【讨论】:

          【解决方案6】:

          对我来说最简单的方法是从 SiteApps Marketplace 安装此应用:

          http://siteapps.com/app/log_javascript_errors_with_ga-181

          一旦你安装了平台标签,你就可以安装很多应用程序,上面那个对我来说非常有用。我在自己开发的 14 个网站中使用它,并且可以在 Google Analytics 中跟踪 javascript 错误。

          希望这能有所帮助。

          莱安德罗

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-03-08
            • 2018-06-24
            • 2020-05-25
            • 1970-01-01
            • 2012-05-31
            相关资源
            最近更新 更多