如何在Javascript中检测Safari 10浏览器?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Javascript中检测Safari 10浏览器?相关的知识,希望对你有一定的参考价值。

我在用

var isSafari = /constructor/i.test(window.htmlElement)

但它不适用于新的Safari 10。

关于使用什么的任何建议?

谢谢!

编辑:How to detect Safari, Chrome, IE, Firefox and Opera browser?仅涵盖最高版本9的Safari

答案
var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || safari.pushNotification);

将覆盖所有版本的Safari从3.0到10(不是11)。

它仅检查Safari上流行的两种API转移。在9.1.3之前的版本中,.toString()对象的HTMLElement结果是[object HTMLElementConstructor],并且是Safari独有的。这在9.1.3之后的版本中得到修复。

对于较新的版本,请检查[object SafariRemoteNotification]对象,该对象是仅存在于现代Safari浏览器中的对象类型。

另一答案

我使用以下内容扩展了How to detect Safari, Chrome, IE, Firefox and Opera browser?中提到的safari检测线,并将其放在测试列表的底部:

isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0 || !isChrome && !isOpera && window.webkitAudioContext !== undefined;

在确定它不是Chrome或Opera之后,它基本上检查Web音频API是否使用webkit前缀。 (旧版Chrome和Opera也使用此前缀)

我去caniuse.com看看哪些浏览器支持哪些功能,并尝试寻找一种特定于Safari的方式。这可能是我可以使用的其他功能。 (可能有更好的)。

我知道功能检测通常是更好的方法,除了功能检测不会检测功能是否被破坏或根据浏览器给出不同的结果。

以上是关于如何在Javascript中检测Safari 10浏览器?的主要内容,如果未能解决你的问题,请参考以下文章

您如何在移动 safari 上检测 3G 与 Wifi 连接?

检测 Safari 浏览器

使用 Javascript/jQuery 在 iOS 10.3.3 (safari) 中打开一个新选项卡

在 Mobile Safari 中通过 JavaScript 检测关闭浏览器选项卡?

如何在浏览器 JavaScript 中检测 OS X 是不是处于暗模式? [复制]

如何在移动 Safari 中使用 javascript 突出显示文本选择