如何检测Safari浏览器使用JavaScript?我尝试了下面的代码,它不仅检测Safari浏览器,而且还检测Chrome浏览器。
function IsSafari() {
var is_safari = navigator.userAgent.toLowerCase().indexOf('safari/') > -1;
return is_safari;
}
如何检测Safari浏览器使用JavaScript?我尝试了下面的代码,它不仅检测Safari浏览器,而且还检测Chrome浏览器。
function IsSafari() {
var is_safari = navigator.userAgent.toLowerCase().indexOf('safari/') > -1;
return is_safari;
}
当前回答
为上面的答案修改正则表达式
var isSafari = /^((?!chrome|android|crios|fxios).)*safari/i.test(navigator.userAgent);
低温-铬 fxios - Firefox
其他回答
只使用:
var isSafari = window.safari !== undefined;
if (isSafari) console.log("Safari, yeah!");
注意,这对于移动版本的Safari可能不可靠。
也许这样行得通:
Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor')
编辑:不再工作
基于@SudarP的回答。
在2021年Q3,这个解决方案将失败在Firefox (Uncaught TypeError: navigator.vendor.match(…)是null)和Chrome (Uncaught TypeError:不能读取null属性(读取'length'));
所以这里有一个固定且简短的解决方案:
function isSafari() {
return (navigator.vendor.match(/apple/i) || "").length > 0
}
因为chrome和safari的userAgent几乎是相同的,所以可以更容易地查看浏览器的供应商
Safari
navigator.vendor == "Apple Computer, Inc."
铬
navigator.vendor == "Google Inc."
FireFox(为什么是空的?)
navigator.vendor == ""
IE(为什么没有定义?)
navigator.vendor == undefined
我创建了一个返回布尔类型的函数:
export const isSafari = () => navigator.userAgent.toLowerCase().indexOf('safari') !== -1