【问题标题】:nomodule and "type="module" works differently for IE 11nomodule 和 "type="module" 对于 IE 11 的工作方式不同
【发布时间】:2020-03-04 14:29:54
【问题描述】:

我正在一个应用程序中测试nomoduletype="module" 的功能。我使用了 chrome,它只下载了 type="module" 标签中的文件,这是预期的。但是当我在 IE 11 中测试它时,从两个脚本标签下载到我的娱乐文件。

我已附上图片以供参考。请帮助我理解这种行为。

index.html

<meta charset="utf-8">
<title>custom-element demo</title>
<script src="https://unpkg.com/vue"></script>
<script nomodule src="http://localhost:85/email-compose-legacy.min.js"></script>
<script type="module" src="http://localhost:85/email-compose.min.js"></script>

<email-compose-legacy></email-compose-legacy>

【问题讨论】:

  • 我在给定的链接中看不到任何解决方案,如果您看到请描述解决方案
  • 解决办法是2020年不使用也不支持IE ;)
  • @Dominic 非常无益的评论。我认为公平地说,除了非常小的公司或单人团队之外,我们这些在技术细节上手忙脚乱的人不太可能影响企业选择哪些浏览器支持。虽然您的评论可能是开玩笑的,但它对 OP 没有帮助。 [如果您想知道为什么我没有提供解决方案,我在这里与 OP 处于同样的困境]。

标签: javascript vue.js internet-explorer-11


【解决方案1】:

我认为这是由于不同浏览器使用不同的 JS 引擎所致。

this article,我们可以看到nomoduletype="module"属性只保证脚本是否会被执行但不能保证它们是否会被下载:

nomodule

此布尔属性设置为指示脚本不应在支持 ES2015 模块的浏览器中执行

module:使代码被视为 JavaScript 模块。

所以我们只需要确保type="module"脚本不会在IE中执行,nomodule脚本会在IE中执行,这在Chrome中正好相反。

返回JS引擎,Chrome uses V8为JS引擎,IE and Edge Legacy use Chakra为JS引擎。您会发现脚本也将在 Edge Legacy 中下载。所以我认为这是不同的 JS 引擎导致不同的行为。

【讨论】:

    猜你喜欢
    • 2013-09-11
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-19
    • 2021-06-13
    • 2016-09-19
    相关资源
    最近更新 更多