16

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

我在想这样的事情:

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

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

4

6 回答 6

18

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

另请注意,这需要在任何可能导致错误的 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 就会死掉。根本没有办法处理。

于 2009-02-13T18:07:09.637 回答
9

一种技术是使用 Ajax 进行Javascript 错误记录

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

于 2009-02-13T18:11:35.790 回答
4

我不确定语法错误,但可以使用 window.onerror 事件捕获 js 错误。在谷歌中搜索“在 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

于 2009-02-13T18:08:33.567 回答
1

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

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

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

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

于 2009-02-13T18:10:11.813 回答
0

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

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

  • 使用您的代码的安全代理
  • 来自被阻止站点的脚本
  • 来自扩展的不重要的浏览器 chrome 错误
  • IE Mobile,世界上最差的浏览器
于 2009-02-13T19:04:33.120 回答
0

对我来说最简单的方法是从 SiteApps Marketplace 安装这个应用程序:

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

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

希望这能有所帮助。

莱安德罗

于 2013-04-15T21:02:45.597 回答