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