1 回答
![?](http://img1.sycdn.imooc.com/5333a0aa000121d702000200-100-100.jpg)
TA贡献1796条经验 获得超4个赞
版本 58 不支持它。https://caniuse.com/#search=type%3D%22module%22
但是你可以使用nomodule
来兼容它。
nomodule 属性是一个布尔属性,可防止脚本在支持模块脚本的用户代理中执行。这允许有选择地执行现代用户代理中的模块脚本和旧用户代理中的经典脚本,如下所示。nomodule 属性不能在模块脚本上指定(如果是,将被忽略)。
这是html.spec.whatwg.org的示例
这个例子展示了如何为现代用户代理包含一个模块脚本,为旧用户代理包含一个经典脚本:
<script type="module" src="app.mjs"></script> <script nomodule defer src="classic-app-bundle.js"></script>
在支持模块脚本的现代用户代理中,具有 nomodule 属性的 script 元素将被忽略,具有“模块”类型的脚本元素将被获取并评估(作为模块脚本)。相反,较旧的用户代理将忽略具有“模块”类型的脚本元素,因为这对他们来说是未知的脚本类型——但他们将毫无问题地获取和评估其他脚本元素(作为经典脚本),因为他们不要实现 nomodule 属性。
这意味着高于版本 61type=module
并且nomodule
受支持,则:
该脚本将在“模块”类型的脚本元素中执行。
该脚本不会在属性为“nomodule”的脚本元素中执行。
并且在低于 60 版本type=module
且nomodule
不受支持的情况下,则:
该脚本不会在类型为“模块”的脚本元素中执行,因为
type=module
它是浏览器的未知脚本类型。该脚本将在具有“nomodule”属性的脚本元素中执行,因为浏览器没有实现“nomodule”属性。
希望能帮到你。
添加回答
举报