2010-06-27 63 views
0

如何檢查用戶當前的瀏覽器是否爲Safari 5?通過JS for Safari 5瀏覽器檢測

更新

我們對我們網站的檢查顯示,如果用戶使用舊版瀏覽器消息「不支持的瀏覽器」。目前我們的錯誤顯示爲最新的Safari,它不應該。

+8

等等,停下來,*爲什麼*你在做這個?你不應該檢查*爲瀏覽器*,你應該檢查**要使用的功能**。 – 2010-06-27 12:53:33

+0

確實。 (幾乎)所有這些瀏覽器嗅探腳本都會對用戶代理字符串進行測試,這些字符串在Safari中很容易被欺騙(因此它假裝它是另一個瀏覽器),並且您想要的解決方法不會彈出。另請閱讀http: //www.nczonline.net/blog/2009/12/29/feature-detection-is-not-browser-detection/ – 2010-06-27 14:57:38

+0

[Browser Detection]的可能重複(http://stackoverflow.com/questions/100898/browser -detection) – 2010-06-27 14:59:51

回答

1

參見:

jsBrowsersDetect

或者

Browser detect

但是,這不是一個好的做法,它始終是最好的,但是,要完全避免特定瀏覽器的代碼在可能的情況。 JQuery $.support屬性(如果需要)可用於檢測對特定功能的支持,而不是依賴瀏覽器名稱和版本。

3

如果你確實想這樣做,你可以檢查用戶代理沿着Ext用於執行它的相同的行。

從Ext.js一個片段:

ua = navigator.userAgent.toLowerCase(), 
    check = function(r){ 
     return r.test(ua); 
    }, 
    DOC = document, 
    isStrict = DOC.compatMode == "CSS1Compat", 
    isOpera = check(/opera/), 
    isChrome = check(/\bchrome\b/), 
    isWebKit = check(/webkit/), 
    isSafari = !isChrome && check(/safari/), 
    isSafari2 = isSafari && check(/applewebkit\/4/), // unique to Safari 2 
    isSafari3 = isSafari && check(/version\/3/), 
    isSafari4 = isSafari && check(/version\/4/), 

我猜對Safari 5的,你可以寫一個類似的測試,其中是5,雖然我沒有檢查什麼的Safari 5的用戶代理字符串看起來像我自己。