ie已于2022年6月15日终止支持,仅两类场景需兼容:维护中的老旧内网系统(如ie11)或合同强制要求;判断依据为ua占比<0.1%、合同条款及依赖库是否原生支持。

IE 已于 2022 年 6 月 15 日正式终止支持,Microsoft Edge(基于 Chromium)是唯一受支持的现代桌面浏览器。所谓“解决 IE 兼容问题”,实际只有两类真实场景:一是仍在维护的老旧内网系统(如使用 Trident 内核的 IE11),二是被强制要求“兼容 IE”的甲方/政企验收条款。其余情况,不建议投入任何兼容成本。
怎么判断页面是否真需要支持 IE11
别凭感觉,先看真实数据和约束条件:
- 查服务器日志或统计 SDK(如
Google Analytics、Umami)中MSIE或Trident的 UA 占比——若连续 3 个月低于 0.1%,可直接移除兼容逻辑 - 确认是否被写入合同/招标文件;若只是“建议兼容”,可协商替换为“在 Edge IE 模式下可基本操作”
- 检查依赖库:如用了
axios@1.2.0+、React 18、Vue 3,它们本身已不支持 IE,硬加 polyfill 也跑不起来
IE11 下常见的 JavaScript 报错及修复方式
IE11 支持 ES5,但对 ES6+ 语法零容忍。报错通常长这样:Object doesn't support property or method 'includes'、Expected identifier, string or number(箭头函数或解构导致)。
- 必须用
Babel编译:目标设为targets: { ie: "11" },并启用@babel/preset-env+core-js@3 - 手动补漏:全局引入
core-js/stable和regenerator-runtime/runtime(注意顺序,前者必须在后者之前) - 避免使用
fetch、Promise、Array.from等原生未实现 API——要么用whatwg-fetch,要么改用XMLHttpRequest -
const/let可以用(IE11 支持),但for...of、async/await必须转译
IE11 的 CSS 兼容陷阱与绕过方案
CSS 方面,IE11 对 Flexbox 支持残缺(如不支持 flex: 1 缩写)、Grid 完全不支持、calc() 有空格限制、vh 在地址栏展开/收起时会错乱。
- Flex 布局:显式写
flex-grow: 1、flex-shrink: 1、flex-basis: 0,而非flex: 1 - 替代 Grid:用
display: table或 float +margin-right: -100%(仅限简单布局) -
calc(100vh - 60px)→ 改成calc(100vh - 60px)(IE 要求减号前后不能有空格?不,它其实允许空格;真正问题是某些版本解析vh不稳定,稳妥做法是 JS 动态设高度) - 务必加
meta标签:<meta http-equiv="X-UA-Compatible" content="IE=edge">,否则可能触发 IE7/8 兼容模式
调试 IE11 的实际可行路径
Win10 自带的 IE11 已无法下载,VirtualBox / VMware 中部署 Win7/Win10 LTSC 是唯一可靠方式。Edge 的“IE 模式”仅模拟网络栈和 UA,不模拟渲染引擎,不能用于真实测试。
- 用
F12 开发者工具时,切到Emulation标签页,把Document mode设为11(不是 “Edge”) - 禁用
Compatibility View:注册表路径HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\BrowserEmulation,确保你的域名不在列表里 - 常见假阳性错误:
console.log在未打开开发者工具时会报错——加一层if (window.console) console.log(...) - 网络请求失败?检查是否用了
XMLHttpRequest.withCredentials = true但服务端没返回Access-Control-Allow-Origin: *(IE 对 CORS 更严格)
真正棘手的从来不是语法或样式,而是 Web Components、Custom Elements、IntersectionObserver 这类 API 在 IE 上无替代方案;一旦业务逻辑依赖它们,兼容 IE11 就是伪命题——要么降级功能,要么明确拒绝。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











