如何使用 JavaScript 检测 Safari 浏览器?我试过下面的代码,它不仅可以检测 Safari,还可以检测 Chrome 浏览器。
function IsSafari() {
var is_safari = navigator.userAgent.toLowerCase().indexOf('safari/') > -1;
return is_safari;
}
如何使用 JavaScript 检测 Safari 浏览器?我试过下面的代码,它不仅可以检测 Safari,还可以检测 Chrome 浏览器。
function IsSafari() {
var is_safari = navigator.userAgent.toLowerCase().indexOf('safari/') > -1;
return is_safari;
}
注意:始终尝试检测您要修复的特定行为,而不是针对它isSafari?
作为最后的手段,使用以下正则表达式检测 Safari:
var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
它使用负面环视,不包括 Chrome、Edge 和所有Safari
在其用户代理中包含该名称的Android 浏览器。
您可以轻松地使用 Chrome 的索引来过滤掉 Chrome:
var ua = navigator.userAgent.toLowerCase();
if (ua.indexOf('safari') != -1) {
if (ua.indexOf('chrome') > -1) {
alert("1") // Chrome
} else {
alert("2") // Safari
}
}
正如其他人已经指出的那样,功能检测优于检查特定浏览器。原因之一是可以更改用户代理字符串。另一个原因是该字符串可能会在较新版本中更改并破坏您的代码。
如果您仍然想这样做并测试任何 Safari 版本,我建议您使用它
var isSafari = navigator.vendor && navigator.vendor.indexOf('Apple') > -1 &&
navigator.userAgent &&
navigator.userAgent.indexOf('CriOS') == -1 &&
navigator.userAgent.indexOf('FxiOS') == -1;
这适用于所有设备的任何版本的 Safari:Mac、iPhone、iPod、iPad。
在您当前的浏览器中进行测试:https : //jsfiddle.net/j5hgcbm2/
根据Chrome 文档更新以正确检测 iOS 上的 Chrome
值得注意的是,iOS 上的所有浏览器都只是 Safari 的包装器并使用相同的引擎。请参阅 bfred.it 在此线程中对他自己的回答的评论。
根据Firefox 文档更新以正确检测 iOS 上的 Firefox
只需使用:
var isSafari = window.safari !== undefined;
if (isSafari) console.log("Safari, yeah!");
此代码仅用于检测 safari 浏览器
if (navigator.userAgent.search("Safari") >= 0 && navigator.userAgent.search("Chrome") < 0)
{
alert("Browser is Safari");
}