2012-01-08 226 views
6

我過去幾個月一直在爲我的公司編寫一個腳本,並且只是用安裝說明爲其設計了主站點(我們的員工遍佈全球很少有人聽說過使用腳本,更不用說使用它們了,所以這個前端是爲了減少我花時間支持腳本的時間)。jQuery - 檢測操作系統和操作系統版本

我想要做的是在安裝頁面上檢測他們使用的瀏覽器和OS/OS版本,以便我可以突出顯示最相關的指令,比其他指令稍暗,或者不顯示不相關的部分。

例如,對於IE6,您必須使用Trixie(我相信)來安裝用戶腳本,並且這僅在Win XP上受支持。 Win XP支持IE7,Win XP支持IE8 &僅Win 7支持Win 7和IE9。對於IE7,8 & 9我建議使用IEPro。 Trixie & IEPro的區別在於Trixie需要.user.js的文件擴展名,它必須保存在C:/ Program Files/bhelpuri中。另一方面,IEPro要求擴展名爲.ieuser並保存到不同的位置。特別是對於IE,我想檢測版本並僅顯示正確的鏈接(根據他們應該用於當前瀏覽器的插件,使用.user.js或.ieuser),以便它們被帶到正確的版本該瀏覽器文件的正確保存路徑爲該OS/OS版本。這到目前爲止有什麼意義嗎?

基本上我的問題是,有誰知道一種方法來檢測操作系統版本?我目前使用的是http://www.stoimen.com/blog/2009/07/04/jquery-os-detection/,但不支持操作系統版本,只有操作系統。我試過循環遍歷導航器對象中存儲的所有變量,但沒有成功。任何幫助將不勝感激。

編輯:由於Nates的回答,我已經把確切的代碼在http://jsfiddle.net/Mu8r5/1/。我希望這可以幫助未來的人。

回答

22

最好的辦法是使用navigator.userAgent屬性。它會給出Windows版本號。你可以看到的Windows版本號映射到OS這裏怎麼一個表:

OSVERSIONINFO

下面是一些例子檢測代碼:

var os = (function() { 
    var ua = navigator.userAgent.toLowerCase(); 
    return { 
     isWin2K: /windows nt 5.0/.test(ua), 
     isXP: /windows nt 5.1/.test(ua), 
     isVista: /windows nt 6.0/.test(ua), 
     isWin7: /windows nt 6.1/.test(ua), 
     isWin8: /windows nt 6.2/.test(ua), 
     isWin81: /windows nt 6.3/.test(ua) 
    }; 
}()); 

if(os.isWin7) { 
    ... 
} 

http://jsfiddle.net/45jEc/

+0

感謝您的片段 - 這看起來像一個偉大的起點!我會在我的問題中稍後發佈一個jsfiddle,當我完成它。 – ClarkeyBoy 2012-01-08 09:16:54

1

堆棧溢出問題 Detect exact OS version from browser進入了一些有趣的細節,從User-Agent頭獲取操作系統版本,我相信它包含了可以從JavaScript訪問的相同信息。

5

你可以使用這個偉大的JavaScript庫:http://www.visitorjs.com/details它是開源的最近

編輯:其實,現在更名爲session.js http://github.com/codejoust/session.js據我所知,這是你能得到的最好。

+1

感謝您的指點,我我想我會選擇Nates的答案,因爲我更願意寫自己的代碼(1 - 我確切知道它做了什麼,2 - 我更多地學習)。我也仔細看了一遍這個代碼,然後進行了雙重檢查,但它看起來並不像操作系統版本,只有操作系統。不管怎麼說,還是要謝謝你。 – ClarkeyBoy 2012-01-08 09:15:46

+0

不適用於windows 8.1 ie 11,因爲O/S回來作爲N/A – Rippo 2014-04-25 07:10:26