4

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です。

4

4 に答える 4

14

Chromeには、userAgent文字列内に「Chrome」と「Safari」の両方があります。Safariには「Safari」しかありません。

したがって、これは機能します。

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)alert('Safari');

またはSafariの場合のみ、これを使用します:

if (navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1) {alert('Its Safari');} 

クレジット:カバマル

于 2012-10-09T11:44:07.530 に答える
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ているため、文字列にクロムも含まれているかどうかを具体的に確認する必要があります。そのために簡単なワンライナーを使用できます。

var is_safari = /^(?!.*chrome).*safari/i.test(navigator.userAgent);
于 2012-10-09T11:43:21.960 に答える
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」が含まれていないことを確認する必要があります。

于 2012-10-09T11:44:44.160 に答える
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;
    }
}
于 2012-10-09T11:45:59.227 に答える