如果你使用的是 V8 引擎,Chrome 和 Node.js 所用的,那么你可以利用 JavaScriptStackTraceApi 来获得行号信息,有两个 API:
Error.captureStackTrace()
Error.prepareStackTrace()
在 Chrome 中可运行下面的代码:
01
02
03
04
05
06
07
08
09
10
11
12
|
var
getStackTrace =
function
() {
var
obj = {};
Error.captureStackTrace(obj, getStackTrace);
return
obj.stack;
};
function
foo(){
return
getStackTrace();
}
alert(
"Stack:"
+ foo());
alert(
"Location:"
+ foo().split(/\n+/)[1].replace(/(^\s+|\s+$)/,
""
));
|
点击链接 http://fiddle.jshell.net/Unmi/EE9gM/ 在 Chrome 中运行类似的代码。在 Firefox/Safari 中得不到结果。