JS檢測作業系統

2020-07-16 10:05:09
navigator.userAgent 返回值一般都會包含作業系統的基本資訊,不過這些資訊比較散亂,沒有統一的規則。使用者可以檢測一些更為通用的資訊,如檢測是否為 Windows 系統,或者為 Macintosh 系統,而不去分辨作業系統的版本號。

例如,如果僅檢測通用資訊,那麼所有 Windows 版本的作業系統都會包含 “Win”字串,所有 Macintosh 版本的作業系統都會包含“Mac”字串,所有 Unix 版本的作業系統都會包含有“X11”,而 Linux 作業系統會同時包含“X11”和“Linux”。

範例

通過下面方法可以快速檢測用戶端資訊中是否包含上述字串。
['Win', 'Mac', 'X11', 'Linux'].forEach (function (t) {
    (t === 'X11') ? t = 'Unix' : t;  //處理Unix系統的字串
    navigator['is' + t] = function () {  //為navigator物件擴充套件專用系統檢測方法
        return navigator.userAgent.indexOf(t) != -1;  //檢測是否包含特定字串
    };
});
console.log(navigator.isWin());  //true
console.log(navigator.isMac());  //false
console.log(navigator.isLinux());  //false
console.log(navigator.isUnix());  //false