最常用且可靠的方式是通过 navigator.useragent 获取字符串并用正则匹配关键标识词判断设备类型;该字符串包含操作系统、浏览器、设备等信息,可据此区分 ios、android、windows、macos 等,但 ua 可被修改,仅适用于体验优化而非安全校验。

直接通过 navigator.userAgent 获取字符串,再用正则匹配关键标识词来判断设备类型,这是最常用也最可靠的方式。
获取 User-Agent 字符串
navigator.userAgent 是 BOM 提供的只读属性,返回浏览器发送给服务器的 UA 字符串。它包含操作系统、浏览器名称、版本、设备类型等信息。
示例(在 Chrome 桌面版中):
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36用正则判断常见设备类型
UA 字符串中存在明确的设备特征关键词,可据此区分:iOS、Android、Windows、macOS、iPad、iPhone、Mobile 等。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
iOS / iPhone / iPad:匹配
iPhone或iPad(注意iPod较少见,可忽略) -
Android:匹配
Android,且通常不含Windows或Mac -
桌面系统:匹配
Windows、Mac OS X、Linux、X11等;若同时不匹配Mobile和Tablet,大概率是桌面端 -
是否为移动设备:用
/Mobile|Android|iPhone|iPad|iPod/i判断是否含移动标识
一个简洁实用的判断函数
下面是一个轻量、可直接使用的设备检测函数:
function getDeviceType() {
const ua = navigator.userAgent;
if (/iPad|iPhone|iPod/.test(ua) && !window.MSStream) return 'ios';
if (/Android/.test(ua)) return 'android';
if (/Win/.test(ua)) return 'windows';
if (/Mac OS X/.test(ua)) return 'macos';
if (/Linux/.test(ua)) return 'linux';
return 'unknown';
}
注意:!window.MSStream 是为了排除旧版 IE 在某些模拟场景下的误判(虽已基本淘汰,但加一层保险更稳妥)。
注意事项和替代思路
User-Agent 可被用户或插件修改,不能用于安全校验;仅适合做体验优化(如适配按钮大小、跳转移动端页面等)。
- 不要依赖单一关键词,比如只看
Android就断定是手机——部分 Android 平板或桌面浏览器(如 Kiwi)也会带该字段 - 结合
screen.width或matchMedia媒体查询可增强判断准确性(例如:UA 是 iPad 但屏幕宽度 > 1024px,更可能是桌面模式) - 现代开发中,响应式设计 + CSS 媒体查询比 UA 判断更推荐;UA 检测更适合做兜底或特定逻辑(如微信内唤起 App)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










