如何从脚本本身内部的自加载脚本中获取参数



你好,我有这个例子

<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

看看URLURLSearchParams-

const u =
new URL('https://example.com/init.js?v=1589383111')

const s =
new URLSearchParams(u.search)

console.log(s.get("v"))
// 1589383111

最新更新