Microsoft Edge的用户代理字符串名称是什么?

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,并禁用功能.

Edge团队在他们的博客上详细介绍了这一点.

所有用户代理字符串都包含有关其他浏览器的信息,而不是您使用的实际浏览器 - 不仅包括令牌,还包括"有意义"的版本号.

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字符串,我们可以解决这些开发人员正在使用的黑客攻击,为用户提供最佳体验.

  • 这就是它的解释:Edge假装是Chrome,Chrome假装是Safari,而Safari假装是Mozilla.Edge使用了EdgeHTML,但没有透露,Chrome使用了Blink,但没有透露,但Chrome假装使用WebKit.Webkit假装是KHTML,而KHTML假装是Gecko.网络上的混乱过多. (87认同)
  • "`任何Edge-WebKit的差异都是我们有兴趣修复的错误."那么为什么要创建另一个渲染引擎呢?为什么不使用WebKit? (13认同)
  • 尽管答案总体上很好,但您的结论具有误导性,并且没有解决问题。这个结论实际上是错误的,因为有很多功能 Edge 不支持,但其他浏览器支持(例如 css 'object-fit'),因此明智的做法是检测 Edge 而不是 Webkit。 (2认同)

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#>


aug*_*aug 8

对于那些正在寻找正则表达式来检测IE Microsoft Edge的人,我重新调整了另一个SO答案,并添加了Edge

/(?:\b(MS)?IE\s+|\bTrident\/7\.0;.*\s+rv:|\bEdge\/)(\d+)/

我让它检查Edge然后是一个杂项数字,以防他们决定迭代Edge版本.

编辑:要更新是,Edge和旧的IE版本都被认为是非常不同的浏览器.我的用例需要检测用于营销目的的IE品牌浏览器(如果用户使用任何Internet Explorer/Edge浏览器,我们希望为此展示一些内容),但可能不一定适合您.

  • 它们是2个完全不同的浏览器,字符串匹配具有最小的用例. (6认同)
  • 对于我的情况而言,这非常好,因为我不需要任何类型的IE。 (2认同)

Mat*_*zer 2

目前Web代理并不是网站适配的关键,但您应该检测浏览器功能。

就此而言,您应该使用像Modernizr这样的库来检查特定的浏览器功能,而与用户使用的浏览器供应商或版本无关。

注意:尽管有反对票,每个人都应该查看此问答中的其他答案,该答案广泛解释了我总结的答案背后的内容,其中答案证明许多浏览器供应商不鼓励进行用户代理嗅探。这就是我自己的答案背后的原因,我建议每个人根据功能而不是特定的浏览器来调整他们的网站。