使用JS检测MacOS、iOS、Windows、Android和Linux操作系统。
检测操作系统是网页开发中常见的需求之一。通过JavaScript的`window.navigator`对象及其属性,可以获取用户的操作系统信息。虽然无法百分之百确定用户的操作系统,但在大多数情况下,85%到90%的准确率已经足够。下面是一段可以用于检测操作系统的JavaScript代码:
function getOS() { var userAgent = window.navigator.userAgent, platform = window.navigator?.userAgentData?.platform || window.navigator.platform, macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'], windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'], iosPlatforms = ['iPhone', 'iPad', 'iPod'], 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());
这段代码通过判断`platform`和`userAgent`的值来确定操作系统。其中,`platform`是`navigator`对象的属性,而`userAgent`是`navigator`对象的属性之一。根据不同的操作系统,将`os`变量设置为相应的操作系统名称,最后通过`return`语句返回操作系统名称。
这段代码经过了广泛的测试,可以正确地检测出MacOS、iOS、Android、Windows和Linux等操作系统。不过,不能保证百分之百的准确性。
在代码的灵感来源中,提供了一些相关的链接,包括可以查看可能的`navigator.platform`值的链接以及检测操作系统的最佳实践。此外,还提供了用于测试代码的移动和桌面浏览器列表的链接。
对于一些评论中提到的问题和建议,可以根据需求进行适当的修改和调整,以提高代码的准确性和可用性。例如,将`macosPlatforms`数组中添加`"darwin"`,以支持较新的Mac操作系统;在判断Chrome OS时,使用`userAgent`代替`platform`;将一些逻辑表达式改写为更简洁的形式,如使用`includes()`代替`indexOf()`,使用字符串匹配代替具体的数值判断等。
总体而言,这段代码提供了一种简单可行的方式来检测用户的操作系统,对于大多数情况下的应用已经足够。但需要注意的是,由于不同浏览器和操作系统的差异,无法保证百分之百的准确性。