有关如何以跨浏览器的方式在javascript中生成堆栈跟踪的任何建议吗?
较新的浏览器Chrome和Firefox公开了一个允许生成堆栈跟踪的控制台对象。此方法不提供将堆栈跟踪存储到变量的方法。
https://github.com/eriwen/javascript-stacktrace 工作得非常好,但它会生成单独的ajax请求来加载作为跟踪的一部分包含的脚本文件。这似乎是跟踪库中的常用方法。我猜测浏览器没有公开足够的信息来生成有意义的堆栈跟踪(行号,函数名,文件名,参数等)。
答案 0 :(得分:2)
创建一个Error对象并检查它是否为堆栈成员。改编自Code Overtones:
var e = new Error('dummy');
var stack = e.stack.replace(/^[^\(]+?[\n$]/gm, '') // remove lines without '('
.replace(/^\s+at\s+/gm, '') // remove prefix text ' at '
.split('\n');
console.log(stack);
Error {.stack记录在Mozilla's reference documentation。
中答案 1 :(得分:0)
Airbrake provides a JavaScript library for logging stacktraces到您的Airbrake帐户或Errbit服务器。
我没有在IE中获得堆栈跟踪,而其他的可能不完美,但它看起来确实与您正在寻找的一致。
答案 2 :(得分:-1)
您可以使用stacktrace.js生成javascript stacktrace