【问题标题】:Best way to identify IE 11 using User Agent使用用户代理识别 IE 11 的最佳方法
【发布时间】:2014-07-08 14:50:49
【问题描述】:

识别 IE 11 浏览器的最佳方法是什么?

IE 11 的 UA 格式为:Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko

我正在使用以下代码,但我需要知道使用它是否完全安全,或者是否还有其他替代方法?

 sUserAgent = Request.ServerVariables("HTTP_USER_AGENT")
comstart = instr(sUserAgent,"(")
comend = instr(sUserAgent,")")
if comstart <> 0 then
    cmtlist = mid(sUserAgent,comstart+1,comend-comstart-1)
else
    cmtlist = " ; ; ;"
end if
cmtArray = split(cmtlist,";")
if instr(sUserAgent,"rv") > 0 then ' it's a Microsoft browser
    browserName="MSIE"
    browserVersion=right(cmtArray(1),len(cmtArray(1))-5)
endif

另外,在其他一些文件中,我使用了以下 JavaScript 代码。请告知是否建议使用此代码。如果有更好的方法,请提出建议。这段代码将来能否给出一些意想不到的结果? :

// In IE11, the true version is after "rv" in the User Agent string
    var nAgt = navigator.userAgent;
    if ((verOffset = nAgt.indexOf("rv")) != -1) 
    {
        browserName = "Microsoft Internet Explorer";
        fullVersion = nAgt.substring(verOffset + 3);

    }

【问题讨论】:

标签: cross-browser internet-explorer-11 browser-detection


【解决方案1】:

虽然功能检测非常有用,有时是区分支持和不支持浏览器版本的最快方法,但检测 IE 及其版本实际上是小菜一碟:

var uA = navigator.userAgent;
var browser = null;
var ieVersion = null;
var htmlTag = document.documentElement;

if (uA.indexOf('MSIE 6') >= 0) {
    browser = 'IE';
    ieVersion = 6;
}
if (uA.indexOf('MSIE 7') >= 0) {
    browser = 'IE';
    ieVersion = 7;
}
if (document.documentMode) { // as of IE8; strictly IE proprietary 
    browser = 'IE';
    ieVersion = document.documentMode;
}

// Using it can be done like this: 
if (browser == 'IE' && ieVersion == 11)
    htmlTag.className += ' ie11';

.
这就是你所需要的。您还可以使用此脚本在较低的模式/视图中捕获较高的 IE,包括兼容性 ~。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 2015-09-27
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多