哪些特性需IE 11兼容模式?旧网站Edge兼容模式迁移技术问询
除了你已经发现的ActiveX依赖,以下这些IE专属特性或技术也是常见的兼容模式依赖点,需要逐一排查:
IE专属DOM API与事件模型
代码中可能使用了IE独有的DOM对象或事件处理方式,比如document.all、window.event的直接引用、attachEvent/detachEvent事件绑定(而非标准的addEventListener),还有document.selection这类IE特有的文本选择接口。可以通过全局搜索这些关键词定位相关代码。IE私有CSS语法与布局hack
检查CSS中的-ms-前缀旧属性(比如-ms-filter实现透明度,而非标准opacity),以及IE专属的选择器hack(如*html、*+html)、针对IE布局bug的特殊处理(比如双倍边距问题的display: inlinehack)。另外,IE对box-sizing的旧实现、表格布局的渲染逻辑也和现代浏览器有差异。受限的JavaScript语法支持
IE11对ES6+特性支持不全,若代码未经过转译,可能存在箭头函数、let/const块级作用域、Promise、解构赋值等特性的兼容问题。此外,IE特有的语法如arguments.callee(严格模式下禁用)、with语句(现代浏览器严格模式不支持)也需要清理。非ActiveX的插件与脚本依赖
比如依赖VBScript(IE专属脚本语言,Edge原生完全不支持),或者已淘汰的插件如Java Applet、Silverlight,这些在Edge原生模式下无法运行,需要替换为Web标准实现。怪异模式(Quirks Mode)依赖
如果页面缺少正确的DOCTYPE声明,IE会触发怪异模式渲染,而Edge原生模式会遵循标准模式,可能导致布局完全错乱。检查页面开头是否有<!DOCTYPE html>声明,以及是否依赖IE怪异模式下的渲染行为。专属存储与Cookie机制
依赖IE独有的userData存储(而非现代的localStorage/sessionStorage),或者Cookie的路径、域规则依赖IE的特殊处理逻辑,这些在Edge中可能表现不一致。IE专属网络请求方案
使用XDomainRequest进行跨域请求(IE专属,替代标准的XMLHttpRequest或fetch),或者依赖IE的HTTP缓存特殊规则,这些都需要替换为Web标准实现。
内容的提问来源于stack exchange,提问作者Nigel Tunnicliffe

