我需要知道在javascript中调用变量或函数时是否有提取脚本名称的方法。该场景通过webdriver或节点运行chrome,当调用例如window.jQuery.Animation时,我想获得定义此函数的文件名(即jquery.js)。我知道在chrome中你可以点击'显示功能代码'并跳转到文件,但我希望以编程方式做同样的事情。
由于
答案 0 :(得分:0)
在纯JavaScript中你没有这样做的方法。
不同的javascript引擎(spiderMonkey,V8,...)通常会以某种方式编译javascript代码,因此您将在此过程中丢失此类信息。
要知道函数的来源,您需要使用此函数的源映射。如果您不了解它们,源地图会将脚本映射到它的原始文件名/行号。
mozilla sourceMap库将为您提供帮助。
但是,您必须为使用jQuery的文件生成源映射。
如果你的script.js就像
var a = jQuery.method // this is line 10
^ col 9
你必须执行
var sourceMap = require('source-map');
consumer = new SourceMapConsumer('script.map');
consumer.originalPositionFor({ line: 10, column: 9 })
// { source: 'jQuery.js',
// line: 12971,
// column: 222,
// name: 'whatever' }
然后,您将能够查询声明该对象的原始位置和文件名。
答案 1 :(得分:0)
也许Error对象可以在这里提供帮助:
var e = new Error;
console.log(e.stack);
堆栈的前两行:
Error
at Object.<anonymous> (/home/joost/src/test/testfile.js:3:9)