我运行一个ASP.NET站点,我有问题,只需手动测试就可以找到一些JavaScript错误.
是否有可能捕获客户端上的所有JavaScript错误并将其记录在服务器上,即在EventLog中(通过Webservice或类似的东西)?
您可以尝试为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代码在许多浏览器中都能正常工作.我发现了以下内容:
http://trackjs.com
https://www.atatus.com
http://jserrlog.appspot.com
http://muscula.com
我不能说任何这些服务,因为我还没有尝试过.
我刚刚在工作中的项目上实现了javascript错误的服务器端错误记录.遗留代码和使用jQuery的新代码混合在一起.
我使用window.onerror
jQuery事件处理程序和onready函数的组合和包含错误处理函数(请参阅:JavaScript错误跟踪:为什么window.onerror不够).
window.onerror
:捕获IE中的所有错误(以及Firefox中的大多数错误),但在Safari和Opera中无效.
jQuery事件处理程序:捕获所有浏览器中的jQuery事件错误.
jQuery ready函数:捕获所有浏览器中的初始化错误.
一旦我发现错误,我会添加一些额外的属性(网址,浏览器等),然后使用ajax调用将其发回服务器.
在服务器上,我有一个小页面,它只接受发布的参数并将它们输出到我们的普通服务器日志框架.
我想为此开源代码(作为jQuery插件).如果有人有兴趣让我知道,那将有助于说服老板们!