你好,我有这个例子
<script src="https://example.com/init.js?v=1589383111"></script>
我如何在 init 脚本中获取参数 v.js
初始化.js脚本
var version = v; // argument from the src itself
您可以使用document.currentScript
访问当前脚本标记。然后,只需提取src
属性并将其解析为 URL。
<!-- _src is used simply for demo purpose. You can't have a src attribute on a script tag with a body -->
<script _src="https://example.com/init.js?v=1589383111">
const self = document.currentScript;
const v = new URLSearchParams(
new URL(self.getAttribute('_src')).search,
).get('v');
console.log(v);
</script>
我会考虑将版本与 ID 一起放在后端的数据属性中。然后,您可以从 DOM 访问它们:
<script src="https://example.com/init.js?v=1589383111"
data-version="1589383111"
id="importantScript"></script>
现在您可以获取该属性的值:
const version = document.getElementById('importantScript').getAttribute('data-version');
在脚本中:
const curScriptElement = document.currentScript;
const queryParams = new URLSearchParams(new URL(curScriptElement.src).search);
const version = queryParams.get('v');
console.log('version is', version);
查看演示:https://plnkr.co/edit/vd02AYWHnJhY6eu1
在这种情况下,请注意浏览器支持(特别是IE(:
- https://caniuse.com/#feat=document-currentscript
- https://caniuse.com/#feat=urlsearchparams
看看URL
和URLSearchParams
-
const u =
new URL('https://example.com/init.js?v=1589383111')
const s =
new URLSearchParams(u.search)
console.log(s.get("v"))
// 1589383111