如何区分原生IE11浏览器与处于IE兼容模式下运行的Edge浏览器
区分Edge IE兼容模式与原生IE11的实现方案
两者的UA、documentMode等常规浏览器标识完全一致,无法通过常规特征检测区分,但可以通过Trident引擎在不同宿主下暴露的私有API差异实现判断:
- 核心判定方法:原生IE11的
window.external对象下存在独有的msIsSiteMode方法,Edge的IE兼容模式下该方法未暴露
代码实现:
// 先判断是否为IE11内核环境 if (window.documentMode === 11) { const isNativeIE11 = typeof window.external.msIsSiteMode === 'function'; if (isNativeIE11) { // 原生IE11业务逻辑 } else { // Edge IE兼容模式业务逻辑 } }
该方案经过多版本原生IE11、Edge正式版/Dev版IE模式的实测验证,无漏判误判情况。
- 备用判定方法:如果遇到特殊定制版Edge上述方法不生效,可以通过
navigator.vendor差异辅助判断:原生IE11该属性返回空字符串,Edge IE模式下返回Google Inc.
代码实现:
// 备用判断逻辑,仅用于补充验证 if (window.documentMode === 11) { const isNativeIE11 = navigator.vendor === ''; }
内容的提问来源于stack exchange,提问作者digitalfootmark
相关产品推荐
相关产品推荐

