Zvo*_*tic 58 mobile user-agent microsoft-edge
我正在制作一个网站,我希望它在正式发布时与即将推出的Microsoft Edge兼容.更具体地说,它的移动版本.有谁知道什么字符串将识别边缘移动浏览器(例如,"IE Mobile"标识Internet Explorer的移动版本).
Dav*_*SFT 94
Microsoft Edge UA字符串:
Mozilla/5.0(Windows NT 10.0)AppleWebKit/537.36(KHTML,与Gecko一样)Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136
Neowin最近报道称微软新推出的适用于Windows 10的浏览器Spartan使用Chrome UA字符串"Mozilla/5.0(Windows NT 10.0; WOW64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/39.0.2171.71 Safari/537.36 Edge/12.0 ". 这是故意的.
您还会注意到整个字符串以"Edge/12.0"结尾,而Chrome则没有.
我应该指出,这与微软对IE 11的做法没有根本的不同,后者在Windows 8上读取:Mozilla/5.0(Windows NT 6.3; Trident/7.0; rv:11.0),如Gecko,如此解释帖子.
什么是用户代理嗅探?
通常,Web开发人员会UA嗅探浏览器检测.Mozilla在他们的博客上解释得很好:
向不同的浏览器提供不同的网页或服务通常是一个坏主意.无论用户使用哪种浏览器或设备,Web都可供所有人访问.有一些方法可以开发您的网站,以便根据功能的可用性逐步增强自身,而不是针对特定的浏览器.
通常,懒惰的开发人员只会嗅探UA字符串并根据他们认为观看者正在使用的浏览器禁用其网站上的内容.Internet Explorer 8是开发人员常见的挫折点,因此他们会经常检查用户是否使用任何版本的IE,并禁用功能.
所有用户代理字符串都包含有关其他浏览器的信息,而不是您使用的实际浏览器 - 不仅包括令牌,还包括"有意义"的版本号.
Internet Explorer 11的UA字符串:
Mozilla/5.0(Windows NT 6.3; Trident/7.0; rv:11.0)就像Gecko一样
Microsoft Edge UA字符串:
Mozilla/5.0(Windows NT 10.0)AppleWebKit/537.36(KHTML,与Gecko一样)Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136
userAgent属性被Patrick H. Lauke在W3C讨论中恰当地描述为"一堆不断增长的谎言".("或者更确切地说,添加足够的遗留关键字的平衡行为不会立即使旧的UA嗅探代码崩溃,同时仍然试图传达一些实际有用和准确的信息.")
我们建议Web开发人员尽可能避免UA嗅探; 现代网络平台功能几乎都可以通过简单的方式检测到.例如,Modernizr库是检测功能的一种非常简单的方法.
在过去的一年中,我们已经看到一些UA嗅探网站已被更新以检测Microsoft Edge ...仅为其提供传统的IE11代码路径.这不是最好的方法,因为Microsoft Edge匹配'WebKit'行为,而不是IE11行为(任何Edge-WebKit差异都是我们有兴趣修复的错误).
根据我们的经验,Microsoft Edge在这些站点中的"WebKit"代码路径上运行得最好.此外,随着互联网在更广泛的设备上可用,请假设未知的浏览器是好的 - 请不要限制您的网站只在一小部分当前已知的浏览器上工作.如果你这样做,你的网站将来几乎肯定会破产.
结论
通过展示Chrome UA字符串,我们可以解决这些开发人员正在使用的黑客攻击,为用户提供最佳体验.
and*_*dih 12
有一篇关于使用"用户代理"进行浏览器检测的MDN文章以及在做类似事情时应该记住的内容.
独立于MSDN Library描述"Edge"的用户代理更改.
从MSDN 用户代理字符串更改页面:
Microsoft Edge for Windows 10 Mobile Insider Preview具有以下用户代理字符串:
Mozilla/5.0(Windows Phone 10.0; Android 4.2.1;设备信息)AppleWebKit/537.36(KHTML,与Gecko一样)Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12. <OS Build#>
对于那些正在寻找正则表达式来检测IE 和 Microsoft Edge的人,我重新调整了另一个SO答案,并添加了Edge
/(?:\b(MS)?IE\s+|\bTrident\/7\.0;.*\s+rv:|\bEdge\/)(\d+)/
我让它检查Edge然后是一个杂项数字,以防他们决定迭代Edge版本.
编辑:要更新是,Edge和旧的IE版本都被认为是非常不同的浏览器.我的用例需要检测用于营销目的的IE品牌浏览器(如果用户使用任何Internet Explorer/Edge浏览器,我们希望为此展示一些内容),但可能不一定适合您.
| 归档时间: |
|
| 查看次数: |
72181 次 |
| 最近记录: |