如何使用 JavaScript 检测 MacOS X、iOS、Windows、Android 和 Linux 操作系统?
我学到了很多关于window.navigator
对象及其属性:platform
, appVersion
and userAgent
。在我看来,几乎不可能 100% 确定地检测用户的操作系统,但就我而言,85%-90% 对我来说就足够了。
因此,在检查了大量 Stack Overflow 答案和一些文章后,我写了这样的内容:
function getOS() {
const userAgent = window.navigator.userAgent,
platform = window.navigator?.userAgentData?.platform || window.navigator.platform,
macosPlatforms = ['macOS', 'Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'],
windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'],
iosPlatforms = ['iPhone', 'iPad', 'iPod'];
let os = null;
if (macosPlatforms.indexOf(platform) !== -1) {
os = 'Mac OS';
} else if (iosPlatforms.indexOf(platform) !== -1) {
os = 'iOS';
} else if (windowsPlatforms.indexOf(platform) !== -1) {
os = 'Windows';
} else if (/Android/.test(userAgent)) {
os = 'Android';
} else if (/Linux/.test(platform)) {
os = 'Linux';
}
return os;
}
alert(getOS());
灵感:
- 截至今天, navigator.platform 的可能值列表是什么? https://stackoverflow.com/questions/19877924/what-is-the-list-of-possible-values-for-navigator-platform-as-of-today
- 使用 JavaScript 或 jQuery 检测 Mac OS X 或 Windows 计算机的最佳方法 https://stackoverflow.com/questions/10527983/best-way-to-detect-mac-os-x-or-windows-computers-with-javascript-or-jquery
- 如何使用 JavaScript 检测我的浏览器版本和操作系统? https://stackoverflow.com/questions/11219582/how-to-detect-my-browser-version-and-operating-system-using-javascript
- 如何使用 javaScript 检测浏览器和操作系统名称和版本 http://code2care.org/pages/detect-browser-and-operating-system-name-and-version-using-javascript/
我还使用移动和桌面浏览器列表来测试我的代码:
- 所有移动浏览器的列表 http://www.useragentstring.com/pages/Mobile%20Browserlist/
- 所有浏览器列表 http://www.useragentstring.com/pages/Browserlist/
这段代码可以正常工作。我在所有操作系统上进行了测试:MacOS、iOS、Android、Windows 和 UNIX,但我不能保证 100% 确定。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)