使用javascript检测Microsoft的边缘或spartan

时间:2015-07-20 08:26:35

标签: javascript browser user-agent

Edge或Spartan浏览器的用户代理是否已知?任何人都可以告诉我如何检测这个浏览器并在IE发布之前将其与IE区分开来吗?

5 个答案:

答案 0 :(得分:18)

一个简单的谷歌搜索找到了您正在寻找的答案:http://forum.piwik.org/read.php?3,125732

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0

因此,您应该匹配:"Edge\/\d+"

答案 1 :(得分:5)

根据this answer

// Internet Explorer 6-11
var isIE = /*@cc_on!@*/false || !!document.documentMode;
// Edge 20+
var isEdge = !isIE && !!window.StyleMedia;

答案 2 :(得分:4)

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

I detail why in this blog post.

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,在这篇文章中解释过。

什么是用户代理嗅探?

通常,网络开发人员会UA嗅探浏览器检测。 Mozilla在他们的博客上解释得很好:

向不同的浏览器提供不同的网页或服务通常是一个坏主意。无论用户使用哪种浏览器或设备,Web都可供所有人访问。有一些方法可以开发您的网站,以便根据功能的可用性逐步增强自身,而不是针对特定的浏览器。

Here’s a great article explaining the history of the User Agent.

通常,懒惰的开发人员只会嗅探UA字符串并根据他们认为观看者正在使用的浏览器禁用其网站上的内容。 Internet Explorer 8是开发人员常见的挫折点,因此他们会经常检查用户是否使用任何版本的IE,并禁用功能。

The Edge team details this even deeper on their blog.

所有用户代理字符串都包含有关除您使用的实际浏览器之外的其他浏览器的更多信息 - 不仅包括令牌,还包含“有意义”的版本号。

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

Patrick H. Lauke在W3C讨论中恰当地将userAgent属性描述为“一堆不断增长的谎言”。 (“或者更确切地说,添加足够的遗留关键字的平衡行为不会立即使旧的UA嗅探代码崩溃,同时仍然试图传达一些实际有用和准确的信息。”)

我们建议Web开发人员尽可能避免UA嗅探;现代网络平台功能几乎都可以通过简单的方式检测到。在过去的一年中,我们已经看到一些UA嗅探网站已被更新以检测Microsoft Edge ...仅为其提供传统的IE11代码路径。这不是最好的方法,因为Microsoft Edge匹配'WebKit'行为,而不是IE11行为(任何Edge-WebKit差异都是我们有兴趣修复的错误)。

根据我们的经验,Microsoft Edge在这些站点中的“WebKit”代码路径上运行得最好。此外,随着互联网在更广泛的设备上可用,请假设未知的浏览器是好的 - 请不要限制您的网站只在一小部分当前已知的浏览器上工作。如果你这样做,你的网站将来几乎肯定会破产。

<强>结论

通过展示Chrome UA字符串,我们可以解决这些开发人员正在使用的黑客攻击,为用户提供最佳体验。

答案 3 :(得分:1)

在UA字符串中查找“Edge”。

虽然在营销人员的心目中,世界是完美的,但实际上浏览器的错误多年来一直没有问题,而且情况总是如此。

在我的情况下,需要我测试Edge与Chrome的问题是Spartan / Edge正确呈现的Chrome下拉高度错误。微软没有什么可以解决的,谷歌已经忽略了这个错误一年多了(它在旧版本的Chrome中正确呈现)。

答案 4 :(得分:0)

另一种基于功能检测的选项。

function isBrowserEdge () {
    return typeof CSS !== 'undefined' && CSS.supports("(-ms-ime-align:auto)");
}