2012-09-16 38 views
4

我在互聯網上到處搜索如何檢測操作系統及其版本。我已經發現如何做到這一點的Windows,(見下面的代碼),現在我希望它也適用於Mac。如何檢測JavaScript中的Mac OS X版本

的Windows代碼檢測(完美的作品!):

// OS detection 
var _os_ = (function(){ 
var userAgent = navigator.userAgent.toLowerCase(); 
return { 
    isWin2K: /windows nt 5.0/.test(userAgent), 
    isXP: /windows nt 5.1/.test(userAgent), 
    isVista: /windows nt 6.0/.test(userAgent), 
    isWin7: /windows nt 6.1/.test(userAgent), 
}; 
}()); 

// get OS shorthand names 

var OS; 
if(_os_.isWin2K){ 
OS = "Windows 2000"; 
} 

if(_os_.isXP){ 
OS = "Windows XP"; 
} 

if(_os_.isVista){ 
OS = "Windows Vista"; 
} 

if(_os_.isWin7){ 
OS = "Windows 7"; 
} 

alert(OS); 

所以我不知道是否有可能做同樣的事情在Mac OS X一樣,

... 
return { 
    isMac10.5: /mac osx 10.5/.test(userAgent), 
    isMac10.6: /mac osx 10.6/.test(userAgent), 
    isMac10.7: /mac osx 10.7/.test(userAgent), 
    isMac10.8: /mac osx 10.8/.test(userAgent), 
}; 

.... 
if(_os_.isMac10.5){ 
OS = "Mac OS X Leopard"; 
} 

etc., etc... 

任何想法?任何幫助將非常感激!

+1

'的Windows代碼檢測(完美的作品!)之間'或許在它們的缺省配置某些瀏覽器。用戶代理字符串沒有標準,用戶代理可以報告他們想要的任何內容,這是不可靠的,當然也不是「完美」的。 – RobG

回答

4
return { 
    isMac105: /Mac OS X 10_5/.test(userAgent), 
    isMac106: /Mac OS X 10_6/.test(userAgent), 
    isMac107: /Mac OS X 10_7/.test(userAgent), 
    isMac108: /Mac OS X 10_8/.test(userAgent), 
}; 

useragent for mac例如,

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_1) AppleWebKit/536.25 (KHTML, like Gecko) Version/6.0 Safari/536.25

Macintosh; U; Intel Mac OS X 10_5_8; ru) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5

+0

你可以在屬性名稱中使用點嗎? –

+0

@WaleedKhan複製/粘貼:-) – askovpen

+2

這不適用於Firefox。 userAgent是:''Mozilla/5.0(Macintosh; Intel Mac OS X 10.6; rv:26.0)Gecko/20100101 Firefox/26.0「' – Barmar

1

是啊,那是因爲在Firefox上OSX版本沒有被列爲10_6,但10.6所以,你必須補充的是具體線路:isMac106:/ Mac的OS X 10.6 /。測試(的userAgent )

,請注意10點和6