以编程方式显示Javascript函数文件名
Show Javascript function filename programmatically
我需要知道在javascript中调用变量或函数时是否有提取脚本名称的方法。场景是通过webdriver或node运行chrome,当调用例如window.jQuery.Animation时,我想获得定义该函数的文件名(即jQuery.js)。我知道在chrome中,你可以点击"显示函数代码"并跳转到文件,但我希望以编程的方式做到这一点。
感谢
也许Error对象可以在这里提供帮助:
var e = new Error;
console.log(e.stack);
堆栈的前两行:
Error
at Object.<anonymous> (/home/joost/src/test/testfile.js:3:9)
在纯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' }
然后,您将能够查询声明该对象的原始位置和文件名。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 如何在JavaScript中将字符串转换为函数引用
- 用嵌套函数和默认函数定义函数
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- JQuery合并了keyup和focusout两个函数
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 我可以在json对象中添加一个函数吗
- 如何获取在 Node 中调用函数的文件名和行号
- 将 HTML 表导出到 Excel JavaScript 函数添加选择文件名
- 如何在 url 中传递长文件名并使用 php 函数下载文件
- 以编程方式显示Javascript函数文件名
- 使用 js 文件名调用 javascript 函数
- 为什么地址栏中的文件名会被JavaScript函数替换
- Nodejs:获取调用函数的文件名
- 为什么Gulp不保留dest函数返回的文件名
- 如何将文件名传递给wiston记录器构造函数