You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过编程区分Internet Explorer与IE模式运行的Edge浏览器?

区分纯IE浏览器与Edge IE模式的解决方案

JavaScript客户端检测方案

由于常规的document.documentMode、navigator.userAgent等属性在两种环境下完全一致,可通过Edge IE模式特有的浏览器API来区分:

核心思路

Edge基于Chromium内核,其IE模式下仍保留部分Edge专属的浏览器属性,而纯IE(包括IE11)无这些属性。最可靠的是检查navigator.userAgentData——这是Chromium系浏览器的标准属性,纯IE不存在该对象。

代码示例

// 判断是否处于Edge IE模式
function isEdgeIEMode() {
    // 检查userAgentData是否存在,且包含Microsoft Edge标识
    if (navigator.userAgentData?.brands) {
        return navigator.userAgentData.brands.some(brand => brand.brand === 'Microsoft Edge');
    }
    return false;
}

// 判断是否是纯IE浏览器
function isPureIE() {
    // 先排除Edge IE模式,再验证是否为IE环境
    return !isEdgeIEMode() && !!window.document.documentMode;
}

注意事项

  • 该方法适用于Edge 80及以上版本的IE模式,更低版本的Edge可能不支持userAgentData;
  • 若需兼容旧版Edge IE模式,可补充检查window.external的专属方法,但稳定性略差。

VB.NET服务器端检测方案

服务器端可通过请求头的差异来区分,Edge IE模式会发送纯IE不会携带的专属请求头。

核心思路

Edge IE模式会自动添加X-MS-Edge-Mode请求头,值为IE;同时Chromium系浏览器的Sec-CH-UA头也会包含Microsoft Edge的标识,纯IE不会发送这些头。

代码示例

' 判断请求是否来自Edge IE模式
Public Function IsEdgeIEMode(request As HttpRequest) As Boolean
    ' 优先检查X-MS-Edge-Mode专属头
    If Not String.IsNullOrEmpty(request.Headers("X-MS-Edge-Mode")) Then
        Return request.Headers("X-MS-Edge-Mode").Equals("IE", StringComparison.OrdinalIgnoreCase)
    End If
    ' 备选:检查Sec-CH-UA头是否包含Edge标识
    If Not String.IsNullOrEmpty(request.Headers("Sec-CH-UA")) Then
        Return request.Headers("Sec-CH-UA").Contains("Microsoft Edge")
    End If
    Return False
End Function

' 判断请求是否来自纯IE浏览器
Public Function IsPureIE(request As HttpRequest) As Boolean
    ' 先排除Edge IE模式,再验证IE特征
    If IsEdgeIEMode(request) Then
        Return False
    End If
    Dim userAgent = request.UserAgent
    Return request.Browser.Browser.Equals("IE", StringComparison.OrdinalIgnoreCase) OrElse 
           Not String.IsNullOrEmpty(userAgent) AndAlso (userAgent.Contains("MSIE") OrElse userAgent.Contains("Trident/"))
End Function

注意事项

  • X-MS-Edge-Mode是Edge IE模式的专属请求头,优先级最高;
  • 若用户手动修改请求头,该方法可能失效,但此类场景极少。

内容的提问来源于stack exchange,提问作者user20180413

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 15:35:35