2011-02-13 38 views
3

我想檢測瀏覽器是否爲Safari。如果是這樣,那麼只能做點什麼。在所有其他瀏覽器中,執行其他操作:navigator.userAgent

if (navigator.userAgent.toLowerCase().indexOf('safari') == -1) { 
    //if safari execute some function 
} else { 
    // if other browsers execute other function 
} 

但是,我想我沒有使用正確的方法,因爲它不起作用。 :P

+2

這應該是`!=`。永遠不要依靠瀏覽器檢測,而是要檢測功能。 – JCOC611 2011-02-13 21:29:44

+0

通常有更好的方法來做到這一點,而不是嗅探用戶代理。你想在Safari中做不同的事情是什麼? – 2011-02-13 23:55:09

+0

嗅探瀏覽器的一個好理由是您可以解決瀏覽器特定的錯誤。例如,我正在解決一個Safari錯誤,當GET頭中存在Range頭時,會錯誤地緩存資源。 – hughw 2013-01-20 15:34:18

回答

3

Quirksmode有一個Browser Detection Script,您可以使用它來檢測正在使用的不同瀏覽器,然後根據該瀏覽器類型執行不同的操作。

在引擎蓋下,它基本上使用了您嘗試使用的相同技巧。

在你的例子中,你實際上很接近。一個快速的解決辦法是將==更改爲!=,瞧,你的腳本應該工作!

但是,我正在運行Chrome,而不是Safari!然而,在我的用戶代理字符串,我看到以下內容:

"Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.10 
     (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10" 

「野生動物園」這個詞出現在我的userAgent字符串,這意味着,使用你的腳本,我的瀏覽器會好像它是Safari瀏覽器處理!

4
if(typeof navigator.vendor!='undefined') && 
    navigator.vendor.toLowerCase().indexOf('apple')!=-1){ 
    ... 
} 
0

我結束了使用

var isSafari = navigator.userAgent.match(/safari/i) != null && navigator.userAgent.match(/chrome/i) == null; 

if(isSafari){ 
    // code here 
    } 
相關問題