我们都知道,IE11检测不适用于服务器端语言,因为微软已经删除了IE/MSIE浏览器指示,现在完全是"Mozilla“。
我也知道做浏览器检测/版本是有风险的,但在过去我们都做得很好。
对网站的一些要求是这样的:
必须适用于某些版本的火狐和更高版本必须适用于某些版本的chrome和更高版本必须适用于某些版本的safari(以下版本和更新版本)必须适用于IE >= 8
所以问题就在这里...IE11在我的列表中指示它不受支持。我想从服务器(ASP.NET/MVC)的web端来支持它。
目前还不清楚如何从服务器端准确地检测到这一点。有人知道是怎么回事吗?
这是现在在IE 11中显示的用户代理:
"Mozilla/5.0 (Windows NT 6.1;WOW64;Trident/7.0;rv:11.0),如壁虎“
rv:11.0告诉我们它的IE11,但是做一个解析仍然意味着,例如,它可能是某个版本的chrome,而这个版本在这样的需求中不受支持,甚至是firefox。
那么,检查IE 11或更高版本的最好方法是什么呢?
我不太确定从“三叉树”开始的搜索,因为我不知道其他浏览器是否使用它。
欢迎任何方向。
发布于 2013-11-15 20:41:48
我使用下面的Regex解决了这个问题,因为我使用了一个敲出系统来检查访问站点所使用的浏览器。
在这种情况下,即使检查了浏览器"IE“并返回false,我仍然继续使用这个正则表达式,并检查它是否与用户代理匹配:
(?:\b(MS)?IE\s+|\bTrident\/7\.0;.*\s+rv:)(\d+)
我希望这对某些人有帮助。我对它进行了测试,运行良好。我还将rv更改为12或更高,如果在IE12中,他们将rv更改为12,它也可以很好地工作。
发布于 2013-11-15 20:17:48
使用如下正则表达式:
Regex.IsMatch(this.Request.UserAgent, @"Trident/7.*rv:11")
Trident是IE使用的渲染引擎的名称。正如您在Wikipedia文章中所看到的,其他一些应用程序也使用Trident引擎。但是在用户代理中搜索三叉树应该不是问题,因为没有其他主要浏览器使用三叉树。
只有IE11使用三叉树版本7,所以如果您使用正则表达式搜索Trident/7
,它应该会找到IE11。
发布于 2013-11-15 19:33:00
public ActionResult Index()
{
var browser = this.Request.Browser;
System.Diagnostics.Trace.WriteLine(browser.Browser); // InternetExplorer
System.Diagnostics.Trace.WriteLine(browser.MajorVersion); // 11
return View();
}
请注意,您需要安装有http://support.microsoft.com/kb/2836939/en-us的.NET 4.5或.NET 4.0才能正确检测IE11。
https://stackoverflow.com/questions/19999989
复制相似问题