如何用Asp.net中的javascript检测IE 11

前端之家收集整理的这篇文章主要介绍了如何用Asp.net中的javascript检测IE 11前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
你好我想检测浏览器,IE8以上会适合我.为此,我使用以下代码,但它失败的IE 11.其他检测正确.
function getInternetExplorerVersion()
{
    var rv = -1; // Return value assumes failure.
    if (navigator.appName == 'Microsoft Internet Explorer') {
        var ua = navigator.userAgent;
        var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
        if (re.exec(ua) != null)
            rv = parseFloat(RegExp.$1);
    }
    return rv;
}

以下是我尝试但不能成功的链接.

解决方法

不要浏览器检测!它会破坏,这会导致你的问题.

IE11与以前的IE版本具有完全不同的用户代理字符串;它不再包含“MSIE”文本.这就是为什么你的检测代码不起作用.

请注意,他们这样做的原因是故意的.他们想要像这样打破浏览器检测脚本.

可以将您的代码更改为使用IE11,但我强烈建议您不要这样做,因为当IE12出来时,您可能会再次出现同样的问题.

那么为什么他们想打破浏览器检测脚本?简单:因为IE11没有以前的版本的bug,它有很多新功能.因此,如果您正在进行浏览器检测,因为IE具有某些错误或缺少功能,并且您已经有了基于浏览器检测来修复这些问题的代码,那么该代码实际上可能会导致IE11中不需要修复的更严重的问题.

IE11已经破坏了您的脚本,但同样的逻辑适用于所有浏览器和所有版本;检测浏览器和版本几乎总是错误的事情.

如果您想要支持的特定功能,但在较旧的IE版本(或其他较旧的浏览器)中缺少,请勿使用浏览器检测来实现;您应该使用功能检测.

功能检测意味着检查浏览器是否支持您要使用的特定功能.最常用的方法是使用Modernizr库.他们网站上的文档将指导您进行设置.

较旧的IE版本中有几个错误很难被检测到,而对于这些少数情况,使用浏览器检测作为最后的手段是有效的,但是这些情况只适用于IE6和更早版本.也许偶尔为IE7.但是你在这个问题上已经说过,你只是在看IE8和更高版本,所以不应该适用.

坚持功能检测;更可靠,更好的做法,并且当新的浏览器版本发布时不会突然崩溃.

猜你在找的asp.Net相关文章