在非内联脚本方法中获取内联脚本的script元素

时间:2018-07-25 07:57:45

标签: javascript

我有一个内联脚本,例如inline.html和一个不是内联的库library.js

我在内联脚本中调用library.method(),在此方法中,我需要知道从哪个内联脚本中调用了该方法。

library.method = function() {

    document.currentScript;

};

当然提供了库的脚本元素。

但是我需要调用脚本的script元素:例如document.invokingScript。 (我知道,这不存在。)

还有什么可以做的吗?

出于可读性原因,我不想在嵌入式脚本中执行library.method(document.currentScript)

1 个答案:

答案 0 :(得分:0)

如果您可以保证仅从函数内部调用library.method,并且该包装函数在每个内联脚本中将具有不同的名称-那么您可以使用以下代码段(摘自{{ 3}})

var stackTrace = (new Error()).stack; // Only tested in latest FF and Chrome
var callerName = stackTrace.replace(/^Error\s+/, ''); // Sanitize Chrome
callerName = callerName.split("\n")[1]; // 1st item is this, 2nd item is caller
callerName = callerName.replace(/^\s+at Object./, ''); // Sanitize Chrome
callerName = callerName.replace(/ \(.+\)$/, ''); // Sanitize Chrome
callerName = callerName.replace(/\@.+/, ''); // Sanitize Firefox