可以得到 <script> src JavaScript URL 的查询参数吗?

Possible to get query parameters of the <script> src JavaScript URL?

例如,我有以下 html:

<body>
  <script src="code.js?q=xyz"></script>
</body>

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

console.log(window.location.href)

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

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

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

var scripts = document.getElementsByTagName('script');
var src = scripts[scripts.length - 1].src;

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