我正在试图确定表面RT的用户代理字符串以进行测试目的。
我正在试图确定表面RT的用户代理字符串以进行测试目的。
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
我昨天(2012年11月13日)去了一家微软零售店,并使用IE浏览器在Metro和桌面模式下访问http://whatsmyuseragent.com/。
以下是两种情况下给出的用户代理:
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0; Touch)
对于那些感兴趣的人,这是 Surface Pro(128Gb)的用户代理字符串:
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0; Touch)
这是我的用户代理信息:
Mozilla/5.0 (Windows NT 6.3; Win64; x64; Trident/7.0; Touch; rv:11.0) like Gecko
实际上,大家都错了。在 Metro 模式下出现的实际用户代理是
Mozilla/4.0(兼容;msie 7.0;Windows NT 6.2;ARM;Trident/6.0; Touch;.NET4.0e;.NET4.0c;Tablet PC 2.0;版本)。
Surface RT只能运行IE 10浏览器。
用户代理字符串为
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0)
(来源:MSDN博客文章)
这种类型的信息通常会在底层浏览器/机器交付之前发布,因为Web浏览器制造商对于新浏览器得到大多数网站的良好支持非常感兴趣。
设备的用户代理 -
IE桌面版 - "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.3; rv:11.0) like Gecko"
IE Surface Pro - "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; Touch; .NET4.0C; .NET4.0E; Tablet PC 2.0; rv 11.0) like Gecko"
Edge桌面版 - "Mozilla/5.0 (Windows NT 10.0; Win64; x64; ServiceUI 9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063"
边缘浏览器 - "Mozilla/5.0 (Windows NT 10.0; Win64; x64; ServiceUI 13) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134"
通过查看上述用户代理,我们无法清楚地区分Edge浏览器桌面和Surface Pro版(IE浏览器有可用的平板电脑检查)。因此在这里首先检测窗口设备(Surface Pro是Windows平板电脑),然后验证设备是否为触摸设备。
window + touch: true - Surface Pro
window + touch: false - 桌面
isSurface: function () {
// Window device Check
if(!!navigator.userAgent.match(/Win/)) {
// Check if the device is touch
return !!navigator.userAgent.match(/Tablet PC/i) || "ontouchstart" in document.documentElement;
}
}