我没有在 HTML spec 中找到任何提及网络上也没有任何地方说这是可能的,但我仍然会问以防万一。
是否可以获取模块的 URL,例如获取与该 URL 相关的文件?
假设我的 index.html
有一个:
<script type="module">import '/foo/foo.js'</script>
和 foo.js
想知道它自己的 url 是什么来动态加载一些文件,例如./file-inside-foo
。
截至撰写本文时,document.currentScript
在模块内返回 null
,这可能是设计使然吗?
最佳答案
ECMA-262 有一个 Stage 3 Proposal用于实现 import.meta
。在 Web 上,这公开了一个名为 url
的属性,当从模块内部访问时,可以访问该模块的完整 URL。
// in /path/to/your/module.js
const { pathname } = new URL(import.meta.url);
console.log(pathname); // '/path/to/your/module.js'
你也可以使用URL
构造函数的第二个参数来跳过这里的一个步骤:
const url = new URL('relative/file.js', import.meta.url);
不幸的是,import.meta
可能尚未在所有浏览器中可用,但 implemented in v64 of Google Chrome .
关于javascript - 获取当前模块脚本的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46691735/