假设我们在html中有一个脚本标签:
现在,无论如何,我们都可以在“ myscript.js”中获取调用者脚本对象,以便我们可以读取 mycustom-attribute
。当然,我们可以使用一些id / class,但是如果我们想在没有其name / id / class的情况下引用它,该怎么办。这个想法是用来嵌入小部件,而不会出现ID /名称/类冲突的问题。
答案 0 :(得分:2)
由于要使用自定义属性,请参见Neil's answer。
如果可能有多个具有custom属性的脚本,或者对于没有自定义属性的脚本可以使用:
假设您的script
标签如图所示,没有async
或defer
,那么在该脚本的顶级代码中,您可以可靠地知道它是最后一个 script
在DOM中,所以:
var scripts = document.getElementsByTagName("script");
var value = scripts[scripts.length - 1].getAttribute("mycustom-attribute");
如果可能有async
或defer
,则需要按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);
}