Answers:
那么,为什么它具有Mozilla,Chrome和Safari,而不仅仅是Edge?
网页设计师只是懒惰,他们试图阻止访问者使用特定的浏览器,因为他们想要使用仅某些浏览器支持的更简单的框架。
限制用户代理检查的有用性也是有意的设计决策。该决定可能基于事实(从Spartan / Edge Developers的角度来看),即过去,网站将专门针对IE并通知用户使用其他浏览器。
由于Edge / Spartan是Microsoft首次尝试对Trident引擎进行现代化改造,并且Edge / Spartan的目的是匹配当时的功能集(Blink,AppleWebKit和Gecko),因此用户代理只是在宣传自己,因为一切都是一种方式以防止网页设计人员以与IE相同的方式轻松地将Edge定位到Edge。
您今天访问的许多网站在IE中都无法很好地显示,因为它们的编码不正确,并且即使Internet Explorer 11支持许多新的Web标准,它们也通常会像在旧浏览器中一样显示页面。某些页面在IE中无法正确显示,而在其他浏览器(例如Chrome或Firefox)上可以正常运行。
即使在您关闭平滑滚动后,对于某些网站来说,急速滚动也不会消失的问题,并且在某些情况下,由于网页将您的浏览器标识为IE,重要元素也不会显示。
Chrome和Firefox也有类似的功能:
Mozilla / 5.0(Windows NT XY; WOW64)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 50.0.2657.0 Safari / 537.36,gzip(gfe),gzip(gfe)”
值得指出的是,IE11的用户代理是类似的:
像Gecko一样的Mozilla / 5.0(Windows NT 10.0; WOW64; Trident / 7.0; rv:11.0)
Edge假装为Chrome,Chrome假装为Safari,Safari假装为Mozilla。Edge使用EdgeHTML却没有透露,Chrome使用了Blink,但没有透露,但是Chrome假装使用WebKit。Webkit假装为KHTML,而KHTML假装为Gecko。网络上的混乱太多了。
取自Microsoft Edge的用户代理字符串名称是什么?Claude的评论
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则没有。
我应该指出,这与Microsoft在Windows 8上读取的IE 11并不是一个红色的偏离,就像Gecko所示:Mozilla / 5.0(Windows NT 6.3; Trident / 7.0; rv:11.0),如本说明中所述。发布。
什么是用户代理嗅探?
通常,Web开发人员会UA嗅探以进行浏览器检测。Mozilla在其博客中对此进行了很好的解释:
为不同的浏览器提供不同的网页或服务通常是一个坏主意。所有人都可以访问Web,无论他们使用的是哪种浏览器或设备。有多种方法可以开发您的网站,以基于功能的可用性而不是通过针对特定的浏览器来逐步增强自身。
通常,懒惰的开发人员只会嗅探UA字符串,并根据他们认为查看器正在使用的浏览器来禁用其网站上的内容。对于开发人员来说,Internet Explorer 8是一个令人沮丧的常见问题,因此他们将经常检查用户是否使用IE的任何版本,并禁用功能。
所有用户代理字符串都包含比您正在使用的实际浏览器更多的其他浏览器信息–不仅是令牌,而且还有“有意义的”版本号。
Internet Explorer 11的UA字符串:
像Gecko一样的Mozilla / 5.0(Windows NT 6.3; Trident / 7.0; rv:11.0)
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
在H3C讨论中,Patrick H. Lauke将userAgent属性恰当地描述为“不断增长的谎言”。(“或者,一种平衡的行为,添加了足够多的旧关键字,这些旧关键字不会立即使旧的UA嗅探代码掉落,同时仍然试图传达一些实际有用和准确的信息。”)
我们建议Web开发人员尽可能避免UA嗅探。现代化的网络平台功能几乎都可以通过简单的方式检测到。例如,Modernizr库是一种检测特征的绝佳且简单的方法。
在过去的一年中,我们已经看到一些UA嗅探站点已更新,可以检测Microsoft Edge……只是为其提供了旧版IE11代码路径。这不是最佳方法,因为Microsoft Edge匹配“ WebKit”行为,而不是IE11行为(Edge-WebKit的任何差异都是我们有兴趣修复的错误)。
根据我们的经验,Microsoft Edge在这些站点中的“ WebKit”代码路径上运行最佳。此外,随着Internet在越来越多的设备上可用,请假定未知的浏览器是好的-请不要将您的网站限制为仅在少数当前已知的浏览器上工作。如果这样做,您的站点几乎肯定会在将来中断。
结论
通过显示Chrome UA字符串,我们可以解决这些开发人员正在使用的hack,从而为用户提供最佳体验。