编辑2(2017):
在所有现代浏览器中,您只需调用:(MDN参考)console.trace();
编辑1(2013):
正如在对原始问题的评论中指出的那样,一个更好(更简单)的解决方案是使用对象的属性,如下所示:stack
Error
function stackTrace() {
var err = new Error();
return err.stack;
}
这将生成如下输出:
DBX.Utils.stackTrace@http://localhost:49573/assets/js/scripts.js:44
DBX.Console.Debug@http://localhost:49573/assets/js/scripts.js:9
.success@http://localhost:49573/:462
x.Callbacks/c@http://localhost:49573/assets/js/jquery-1.10.2.min.js:4
x.Callbacks/p.fireWith@http://localhost:49573/assets/js/jquery-1.10.2.min.js:4
k@http://localhost:49573/assets/js/jquery-1.10.2.min.js:6
.send/r@http://localhost:49573/assets/js/jquery-1.10.2.min.js:6
提供调用函数的名称以及 URL、其调用函数等。
原件(2009年):
此代码段的修改版本可能会有所帮助:
function stacktrace() {
function st2(f) {
return !f ? [] :
st2(f.caller).concat([f.toString().split('(')[0].substring(9) + '(' + f.arguments.join(',') + ')']);
}
return st2(arguments.callee.caller);
}