使用用户代理识别IE 11的最佳方法

时间:2014-05-20 11:10:03

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

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

IE 11的UA格式为: Mozilla / 5.0(Windows NT 6.3; Trident / 7.0; rv 11.0),如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);

    }

1 个答案:

答案 0 :(得分:0)

虽然功能检测非常有用,并且有时是区分支持和非支持浏览器版本的最快方法,但检测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,包括兼容性〜。