常见的方法是通过浏览器用户代理来判定。但用户代理是可以伪造的并且匹配规则会经常变动、失效,使用时需要注意。例如判断android设备:
navigator.userAgent.match(/Android/i)开源项目有isMobile(https://github.com/kaimallea/isMobile),mobile-detect.js(https://github.com/hgoebl/mobile-detect.js)。
另外也可以通过设备尺寸来判定是不是手机端。比如:
window.matchMedia("only screen and (max-width: 760px)")通过userAgent判断,navigator.userAgent可以获取当前的userAgent然后通过匹配手机的常见userAgent进行识别
注:userAgent可以在大多数的手机浏览器上修改(例如选择访问电脑版、访问iphone版等选项就是改变userAgent,来骗过服务器获取其他设备访问的版本)
一般手机浏览器里都带有mobile字样(非协议规范)