如何检测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;
}
当前回答
此代码仅用于检测safari浏览器
if (navigator.userAgent.search("Safari") >= 0 && navigator.userAgent.search("Chrome") < 0)
{
alert("Browser is Safari");
}
其他回答
这个独特的“问题”是100%的标志,浏览器是Safari(信不信由你)。
if (Object.getOwnPropertyDescriptor(Document.prototype, 'cookie').descriptor === false) {
console.log('Hello Safari!');
}
这意味着cookie对象描述符在Safari上设置为假,而在其他所有项目上设置为真,这实际上让我在其他项目上头疼。编码快乐!
你可以很容易地使用索引的Chrome过滤Chrome:
var ua = navigator.userAgent.toLowerCase();
if (ua.indexOf('safari') != -1) {
if (ua.indexOf('chrome') > -1) {
alert("1") // Chrome
} else {
alert("2") // Safari
}
}
基于@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
}
就我而言,我需要同时在iOS和macOS上运行Safari。这招对我很管用:
if (/apple/i.test(navigator.vendor)) {
// It's Safari
}
我发现只有一个词可以区分Safari——“版本”。所以这个正则表达式将完美工作:
/.*Version.*Safari.*/.test(navigator.userAgent)