关于如何以跨浏览器的方式在 javascript 中生成堆栈跟踪的任何建议?
较新的浏览器 Chrome 和 Firefox 公开了一个允许生成堆栈跟踪的控制台对象。此方法不提供将堆栈跟踪存储到变量的方法。
https://github.com/eriwen/javascript-stacktrace 工作得很好,但它会发出单独的 ajax 请求来加载包含在跟踪中的脚本文件。这似乎是跟踪库中的常用方法。我猜浏览器没有公开足够的信息来生成有意义的堆栈跟踪(行号、函数名、文件名、参数等)。
关于如何以跨浏览器的方式在 javascript 中生成堆栈跟踪的任何建议?
较新的浏览器 Chrome 和 Firefox 公开了一个允许生成堆栈跟踪的控制台对象。此方法不提供将堆栈跟踪存储到变量的方法。
https://github.com/eriwen/javascript-stacktrace 工作得很好,但它会发出单独的 ajax 请求来加载包含在跟踪中的脚本文件。这似乎是跟踪库中的常用方法。我猜浏览器没有公开足够的信息来生成有意义的堆栈跟踪(行号、函数名、文件名、参数等)。
创建一个错误对象并检查它是否有堆栈成员。改编自代码泛音:
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 的参考文档中。
Airbrake 提供了一个 JavaScript 库,用于将堆栈跟踪记录到您的 Airbrake 帐户或 Errbit 服务器。
我在 IE 中没有得到堆栈跟踪,其他的可能并不完美,但它看起来确实符合您正在寻找的内容。
您可以使用 stacktrace.js 生成 javascript stacktrace