我们收到了一些关于我们结账时出现问题的报告,其中客户获得了js例外(我们假设),因此他们无法结账。
无论我们使用多少个测试平台,我们都无法重新创建问题,但这是练习的重点。
我已经设置了一个简单的错误捕获功能,它基于:
window.onerror = function(message, url, line, chr) {
new Request({
url: "/errorTrap.php",
data: {
m: message,
u: url,
l: line,
c: chr
},
method: "get",
onComplete: function() {
// perhaps save the rendered html source via a second POST request?
alert("done");
}
}).send();
return true;
};
果然,在一周之内,我现在收到8封被困异常的电子邮件。
遗憾的是,结帐页面非常动态。它包含一些内联javascript,很多是外部.js文件和类,有些是通过ajax响应来评估js。页面的长度取决于购物篮中的项目,运送选项,地址簿信息等。
这就是为什么在第253行看到“预期的对象”异常意味着很少,因为它无法帮助我理解哪个函数触发了异常或提供了随之而来的脚本块/源代码的上下文。
我一直在考虑做第二个XHR请求,它可以将document.body的innerHTML删除到ajax处理程序,从而提供可能导致问题的相对行号和内容。
这是我可以做的追踪的唯一改进吗?这个“在那里”有什么解决方案吗?
的jsfiddle答案 0 :(得分:0)
好吧,调试问题总是那样。无论是去那里,实际上看到问题然后用调试工具解决它或获取证据,猜测,获得更多证据等等,Sherlok Holmes风格:^)
除了DOM树之外,您还可以获得JS堆栈跟踪:A Javascript stacktrace in any browser。