javascript - 获取当前模块脚本的 URL

标签 javascript html ecmascript-6

我没有在 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/

相关文章:

html - 在标签标签中使用超链接( anchor 标签)是标准的吗?

javascript - Knockout.js 可以更改不在 viewModel 中的变量吗

javascript - 使用带有标签 :true, 的 select2 jquery 插件,如何防止选项显示在已选择的下拉列表中?

javascript - 自动缩放 DIV 元素并考虑页眉和页脚直到滚动

html - 宽度 :auto in firefox is not working as intended

javascript - ES6 映射一个对象数组,返回一个带有新键的对象数组

javascript - 对象的可配置属性和可写属性之间的区别

javascript - eslint 无法捕获另一个模块中定义的拼写错误的函数名称

javascript - 为什么这个跨度不会隐藏,为什么它显示为#text?

javascript - 无法使用 aws sam 和 Node js 将图像保存到亚马逊 S3