我正在寻找一种通过javascript检测Safari的方法。我知道它已被覆盖很多次了,但可能有些东西被改变了,它不再起作用了。至少在我的情况下。
以下是我的工作:
<script>
if(!isSafari()){
alert('not Safari');
} else {
alert('I am Safari');
}
function isSafari(){
var is_safari = navigator.userAgent.indexOf("Safari") > -1;
if(is_safari){
return true;
}
}
</script>
jsbin:http://jsbin.com/ewerof/1
如果您在Safari和Chrome中运行此代码,您将获得相同的提醒“我是Safari”那么如何实际检测Safari?如果重要的话,我的Safari版本是4.0.3。
答案 0 :(得分:11)
Chrome同时拥有Chrome&#39;并且&#39; Safari&#39;在userAgent字符串中。 Safari只有Safari&#39;。
这样可行:
var is_chrome = navigator.userAgent.indexOf('Chrome') > -1;
var is_explorer = navigator.userAgent.indexOf('MSIE') > -1;
var is_firefox = navigator.userAgent.indexOf('Firefox') > -1;
var is_safari = navigator.userAgent.indexOf("Safari") > -1;
var is_Opera = navigator.userAgent.indexOf("Presto") > -1;
if ((is_chrome)&&(is_safari)) {is_safari=false;}
if(is_safari)提醒(&#39; Safari&#39;);
或仅限Safari,请使用:
if (navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1) {alert('Its Safari');}
信用:Kabamaru
答案 1 :(得分:2)
如果您使用Chrome在Web开发人员控制台中输入此内容:
navigator.userAgent
你会得到一个字符串,如:
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.92 Safari/537.4"
此字符串包含Safari
,因此您必须特别检查该字符串是否还包含chrome。您可以使用简单的单行代码:
var is_safari = /^(?!.*chrome).*safari/i.test(navigator.userAgent);
答案 2 :(得分:0)
我正在使用较新版本的Safari,但这仍然适用。
Safari的用户代理:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.14 (KHTML, like Gecko) Version/6.0.1 Safari/536.26.14
Chrome的用户代理
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4
正如您所看到的,它们都包含“Safari”(很可能是因为它们都使用了WebKit)。您的功能仅检查Safari。因此,您的功能需要检查“Safari”并确保该字符串不包含“Chrome”。
答案 3 :(得分:0)
如果您查看您的用户代理,您会在字符串中看到它包含“Safari”;
Your User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.92 Safari/537.4
var xSAF = isSafari();
if(SAF)
{
alert('Is Safari');
} else {
alert('Not Safari');
}
function isSafari()
{
var xUA = navigator.userAgent;
if((xUA.indexOf("Safari")) && (xUA.indexOf("Chrome") == -1))
{
return true;
} else {
return false;
}
}