我正在运行一个 ASP.NET 站点,我无法通过手动测试找到一些 JavaScript 错误。
是否有可能在客户端捕获所有 JavaScript 错误并将它们记录在服务器上,即在 EventLog 中(通过 Web 服务或类似的东西)?
我正在运行一个 ASP.NET 站点,我无法通过手动测试找到一些 JavaScript 错误。
是否有可能在客户端捕获所有 JavaScript 错误并将它们记录在服务器上,即在 EventLog 中(通过 Web 服务或类似的东西)?
您可以尝试为onerror 事件设置自己的处理程序并使用 XMLHttpRequest 告诉服务器出了什么问题,但是由于它不是任何规范的一部分,因此支持有点不稳定。
这是使用 XMLHttpRequest 记录 JavaScript 错误的示例:
window.onerror = function(msg, url, line)
{
var req = new XMLHttpRequest();
var params = "msg=" + encodeURIComponent(msg) + '&url=' + encodeURIComponent(url) + "&line=" + line;
req.open("POST", "/scripts/logerror.php");
req.send(params);
};
简短的回答:是的,这是可能的。
更长的答案:人们已经写过如何(至少部分地)通过编写自己的代码来解决这个问题。但是,请注意,似乎有一些服务可以确保所需的 JS 代码在许多浏览器中都能正常工作。我发现了以下内容:
我不能代表任何这些服务,因为我还没有尝试过。
我刚刚在工作中的项目上实现了服务器端错误日志记录。旧代码和使用jQuery的新代码混合在一起。
我window.onerror
将 jQuery 事件处理程序和 onready 函数与错误处理函数结合使用并包装起来(请参阅:JavaScript 错误跟踪:为什么 window.onerror 不够)。
window.onerror
: 捕获 IE 中的所有错误(以及 Firefox 中的大多数错误),但在 Safari 和 Opera 中不执行任何操作。一旦我发现了错误,我会添加一些额外的属性(url、浏览器等),然后使用 ajax 调用将其发布回服务器。
在服务器上,我有一个小页面,它只接受发布的参数并将它们输出到我们的普通服务器日志框架。
我想为此开源代码(作为 jQuery 插件)。有兴趣的可以私信我,有利于说服老板!
如果您使用 Google Analytics,您可以将 javascript 错误记录到 Google Analytics 事件中。
看到这个应用程序:http ://siteapps.com/app/log_javascript_errors_with_ga-181
希望能帮助到你。
您可能会通过 try/catch 对服务器进行 Ajax 调用,但这可能是您能做的最好的事情。
我可以建议 JavaScript 单元测试吗?可能与JSUnit一起使用?
另外我推荐使用TraceTool实用程序,它带有 JavaScript 支持,对于 JS 监控非常方便。
如果您想将客户端错误记录回服务器,您将不得不进行某种服务器处理。最好的办法是拥有一个可以通过 JavaScript (AJAX) 访问的 Web 服务,并将错误日志信息传递给它。
不是 100% 解决问题,因为如果问题出在托管 Web 服务的 Web 服务器上,您遇到了麻烦,您的另一种选择是通过查询字符串通过标准页面发送信息,一种方法这样做是通过动态生成图像标签(然后将其删除),因为浏览器将尝试加载图像的源。不过,它很好地绕过了跨域 JavaScript 调用。请记住,如果有人关闭了图像,您将遇到麻烦;)
我最近一直在使用Appfail,它可以捕获 asp.net 和 JavaScript 错误