在源脚本中获取JS中的引用<script>对象

时间:2018-08-15 12:34:41

标签: javascript dom widget

假设我们在html中有一个脚本标签:

  
 

现在,无论如何,我们都可以在“ myscript.js”中获取调用者脚本对象,以便我们可以读取 mycustom-attribute 。当然,我们可以使用一些id / class,但是如果我们想在没有其name / id / class的情况下引用它,该怎么办。这个想法是用来嵌入小部件,而不会出现ID /名称/类冲突的问题。

2 个答案:

答案 0 :(得分:2)

由于要使用自定义属性,请参见Neil's answer

如果可能有多个具有custom属性的脚本,或者对于没有自定义属性的脚本可以使用:

假设您的script标签如图所示,没有asyncdefer,那么在该脚本的顶级代码中,您可以可靠地知道它是最后一个 script在DOM中,所以:

var scripts = document.getElementsByTagName("script");
var value = scripts[scripts.length - 1].getAttribute("mycustom-attribute");

如果可能有asyncdefer,则需要按src进行查找,也许使用“ ends with”属性选择器($=) :

var script = document.querySelector("script[src$='myscript.js']");
var value = script.getAttribute("mycustom-attribute");

(还有document.currentScript,但它是“ ...在实施者和标准社区中失宠了...” 。)


旁注:使用自定义属性时,请使用data- prefix

答案 1 :(得分:2)

您可以选择具有自定义属性的脚本:

var script = document.querySelector('script[mycustom-attribute]');
if (script) {
    var value = script.getAttribute('mycustom-attribute');
    console.log(value);
}