可以获取 <script> src JavaScript URL 的查询参数吗?

at.*_*at. 2 javascript script-tag query-parameters location-href html5-history

例如,我有以下 html:

<body>
  <script src="code.js?q=xyz"></script>
</body>
Run Code Online (Sandbox Code Playgroud)

我希望能够q=xyz从内部读取查询参数code.js。我试过:

console.log(window.location.href)
Run Code Online (Sandbox Code Playgroud)

但它给了我 html 文档的 URL,而不是code.js的 URL(然后我可以解析查询参数的 URL)。

有没有办法从该 JavaScript 中获取导入的 JavaScript 文件的查询参数?我知道我可以在服务器上读取查询参数,然后发回嵌入了查询参数的 JavaScript,但我不想要那样。我希望能够将 JavaScript 文件放在可以通过查询参数配置的 CDN 上。

fzz*_*zle 5

您可以使用document.currentScript.src访问 的<script>-src属性,然后提取查询参数。对于较旧的浏览器(例如 IE 11),请src通过以下方式访问-attribute:

var scripts = document.getElementsByTagName('script');
var src = scripts[scripts.length - 1].src;
Run Code Online (Sandbox Code Playgroud)

这将返回src上次执行脚本的 -属性。在某些情况下,最后执行的脚本不是当前脚本(例如,如果脚本操作其他 -<script>元素),因此它有点不可靠。