是否可以直接从 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)
是的,这是可能的。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)