可以获取<;脚本>;src-JavaScript-URL?

可以获取<;脚本>;src-JavaScript-URL?,javascript,html5-history,query-parameters,script-tag,location-href,Javascript,Html5 History,Query Parameters,Script Tag,Location Href,例如,我有以下html: <body> <script src="code.js?q=xyz"></script> </body> 但是它给了我html文档的URL,而不是code.js的URL(然后我可以解析URL以获得查询参数) 有没有办法从JavaScript中获取导入的JavaScript文件的查询参数?我知道我可以在服务器上读取查询参数,然后发送回包含查询参数的JavaScript,但我不希望这样。我希望能够将JavaScript文

例如,我有以下html:

<body>
  <script src="code.js?q=xyz"></script>
</body>
但是它给了我html文档的URL,而不是
code.js
的URL(然后我可以解析URL以获得查询参数)


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

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

var scripts = document.getElementsByTagName('script');
var src = scripts[scripts.length - 1].src;
这将返回最后执行的脚本的
src
-属性。
在某些情况下,最后执行的脚本不是当前脚本(例如,如果脚本操作其他
-元素),因此它有点不可靠。

您需要
文档。在执行此操作之前,您应该检查以下内容:正是我希望存在的内容!谢谢不幸的是,IE11不支持
文档。currentScript
:我通常不关心IE11,但在这种特殊情况下,我必须关心。。。我发现的唯一一个polyfill在IE 6-10上有效,但显然在IE 11上不起作用:(IE 11有任何解决方法吗?有一个解决方法。我会将它添加到答案中。我想这已经在其他地方得到了回答,所以,虽然我找不到问题。我可以搜索所有
标记,并查找一个带有我URL的标记……然后获取查询参数。
var scripts = document.getElementsByTagName('script');
var src = scripts[scripts.length - 1].src;