JavaScript 类型模块不执行

我有以下html文件:


<!DOCTYPE html> 

<html> 


<head> 


</head> 


<body> 


    <script type="module">

        console.log("test");

    </script>


</body>

</html>

但是,控制台不会打印任何内容。如果我删除type="module",它工作得很好。我使用的 Chrome 版本是 58.0.3029.81。我还搜索并测试了我当前的 Chrome 是否支持 ES6。


知道为什么吗?


ibeautiful
浏览 323回答 1
1回答

SMILET

版本 58 不支持它。https://caniuse.com/#search=type%3D%22module%22但是你可以使用nomodule来兼容它。nomodule 属性是一个布尔属性,可防止脚本在支持模块脚本的用户代理中执行。这允许有选择地执行现代用户代理中的模块脚本和旧用户代理中的经典脚本,如下所示。nomodule 属性不能在模块脚本上指定(如果是,将被忽略)。这是html.spec.whatwg.org的示例这个例子展示了如何为现代用户代理包含一个模块脚本,为旧用户代理包含一个经典脚本:<script&nbsp;type="module"&nbsp;src="app.mjs"></script> <script&nbsp;nomodule&nbsp;defer&nbsp;src="classic-app-bundle.js"></script>在支持模块脚本的现代用户代理中,具有 nomodule 属性的 script 元素将被忽略,具有“模块”类型的脚本元素将被获取并评估(作为模块脚本)。相反,较旧的用户代理将忽略具有“模块”类型的脚本元素,因为这对他们来说是未知的脚本类型——但他们将毫无问题地获取和评估其他脚本元素(作为经典脚本),因为他们不要实现 nomodule 属性。这意味着高于版本 61type=module并且nomodule受支持,则:该脚本将在“模块”类型的脚本元素中执行。该脚本不会在属性为“nomodule”的脚本元素中执行。并且在低于 60 版本type=module且nomodule不受支持的情况下,则:该脚本不会在类型为“模块”的脚本元素中执行,因为type=module它是浏览器的未知脚本类型。该脚本将在具有“nomodule”属性的脚本元素中执行,因为浏览器没有实现“nomodule”属性。希望能帮到你。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript