当前位置:首页 > 文章列表 > 文章 > 前端 > Safari10.1忽略nomodule属性吗?

Safari10.1忽略nomodule属性吗?

2026-04-29 22:43:02 0浏览 收藏
Safari 10.1(2017年发布)存在一个关键兼容性陷阱:它完全不识别`nomodule`属性,既不会据此跳过脚本,也不支持`type="module"`,导致现代模块降级方案失效——看似只执行了fallback脚本,实则是解析器偶然行为而非规范保障;若你仍需兼容老旧企业环境中的macOS Sierra设备,仅靠`nomodule`远远不够,必须通过服务端UA判断或轻量探测脚本主动兜底,而真正的可靠支持始于Safari 11。

nomodule在Safari 10.1是否被正确忽略?

nomodule 在 Safari 10.1 中不被忽略

Safari 10.1(2017 年发布)**完全不支持 nomodule 属性**,它既不会识别该属性,也不会据此跳过对应 在 Safari 10.1 下会同时加载并执行两个脚本——app.mjs 因不支持 type="module" 被静默丢弃,而 fallback.js 却会被执行;但问题在于,Safari 10.1 同时也会尝试解析 app.mjs 的内容(如果它是内联的),或在某些配置下触发 MIME 类型错误。

为什么 Safari 10.1 会同时加载两个脚本

根本原因在于 Safari 10.1 对 HTML 解析器的实现:它把 nomodule 当作一个无意义的自定义属性,不参与脚本加载逻辑判断;而对 type="module" 则直接忽略整个标签(不加载、不报错、不 fallback)。所以实际行为是: