我正在使用
var isSafari = /constructor/i.test(window.HTMLElement)
但是它无法在新的Safari 10上工作。
有什么建议可以使用吗?
谢谢!
编辑: 如何检测Safari、Chrome、IE、Firefox和Opera浏览器? 只涵盖了Safari 9及以下版本。
我正在使用
var isSafari = /constructor/i.test(window.HTMLElement)
但是它无法在新的Safari 10上工作。
有什么建议可以使用吗?
谢谢!
编辑: 如何检测Safari、Chrome、IE、Firefox和Opera浏览器? 只涵盖了Safari 9及以下版本。
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 之前的版本中,HTMLElement
对象的 .toString()
结果为 [object HTMLElementConstructor]
,且仅适用于 Safari。这在 9.1.3 之后的版本中得到了修复。
对于更新的版本,请检查 [object SafariRemoteNotification]
对象,这是一种仅存在于现代 Safari 浏览器中的对象类型。
我根据如何检测Safari、Chrome、IE、Firefox和Opera浏览器?提到的方法,扩展了safari检测行,并将其放置在测试列表底部:
isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0 || !isChrome && !isOpera && window.webkitAudioContext !== undefined;
3.0 - 9.0.3
中测试的,而不是在10
中测试的。 - David R