将变量直接从 <script> HTML 标签传递给 Javascript

Bas*_*asj 18 html javascript

是否可以直接从 HTML 标签传递变量<script>

<script async src="https://example.com/lib.js" site="test.com"></script>
Run Code Online (Sandbox Code Playgroud)

这样lib.js可以site像常规变量一样访问?

小智 26

<script async src="https://example.com/lib.js" site="sitePath"></script>
Run Code Online (Sandbox Code Playgroud)

和:

site = document.currentScript.getAttribute('site'); // sitePath
Run Code Online (Sandbox Code Playgroud)


Rey*_*yno 8

是的,这是可能的。site我们可以使用dataset代替创建属性。这是为自定义(数据-)属性制作的。

您现在需要做的就是为脚本提供一个 ID 并查询您的数据。

HTML:

<script async src="script.js" data-site="test.com" id="myscript"></script>
Run Code Online (Sandbox Code Playgroud)

JS:

const script = document.querySelector("#myscript");

console.log(script.dataset.site);
Run Code Online (Sandbox Code Playgroud)

编辑:没有 querySelector

console.log(document.currentScript.dataset.site);
Run Code Online (Sandbox Code Playgroud)

  • @Basj [`document.currentScript`](https://developer.mozilla.org/en-US/docs/Web/API/Document/currentScript) (6认同)