如何用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-mvc – webgrid中的Mvc 3 texbox(razor)
- 围绕ASP.NET会话跨多个选项卡窗口共享的方式
- 构建ASP.NET应用程序 – 最佳实践
- asp-classic – 用经典的asp添加自定义标题
- asp.net – 如何在单独的dll项目中配置WCF
- Asp.Net设计模式之单例模式详解
- asp.net – Webapi,Webhost和Owin之间的关系
- asp.net – 用户控件(ascx)和属性
- asp.net-core – 找不到Swashbuckle.AspNetCore SwaggerOpe
- asp.net-mvc – MVC 5中的TryUpdate()和Update()方法有什么
- asp.net-mvc – RouteCollection.Ignore和RouteC
- asp.net-mvc – EF上下文管理
- asp.net – “线程被中止了什么”. ‘SNIReadSyn
- asp.net-mvc – 使用AppFabric缓存在MVC Session
- asp.net-mvc – ASP.Net MVC中的多项目领域3
- 通过ASP.NET Web应用程序上载500MB文件
- ASP.NET WEB应用程序(.network4.5)mvc 程序的结
- Safari和Asp.net中的cookie存在奇怪的问题
- ASP.NET Server.HtmlEncode限制
- 当我尝试调试ASP.NET程序时,为什么Internet Expl