[英]JavaScript type module doesn't execute
我有以下 html 文件:
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<script type="module">
console.log("test");
</script>
</body>
</html>
但是,控制台不会打印任何内容。 如果我删除type="module"
,它运行良好。 我使用的 Chrome 版本是 58.0.3029.81。 我还用谷歌搜索并测试了我当前的 Chrome 支持 ES6。
知道为什么吗?
版本 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 属性的脚本元素将被忽略,并且具有“模块”类型的脚本元素将被获取和评估(作为模块脚本)。 相反,较旧的用户代理将忽略具有“模块”类型的脚本元素,因为这对他们来说是未知的脚本类型——但他们在获取和评估其他脚本元素(作为经典脚本)时没有问题,因为它们不实现 nomodule 属性。
这意味着在高于版本 61 type=module
和nomodule
被支持,那么:
在低于版本 60 type=module
并且不支持nomodule
情况下,则:
type=module
是浏览器的未知脚本类型。希望能帮到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.