如何检测移动设备是否在Google Chrome中模拟?

15

有没有办法区分真实的移动设备和由Google Chrome模拟的设备? 请注意,Google Chrome可以模拟用户代理、触摸屏、屏幕分辨率和加速度计。 我需要知道一些无法被模拟但可以被JavaScript检测到的特征。


1
你为什么想要这样的东西?(只是出于好奇) - Ali Naci Erdem
你想访问哪个无法模拟的功能? - JeanLuc
1
你检查过 "window.navigator" 属性了吗? - techierishi
你是否在寻找特定的设备来区分(例如iPhone)?不同设备的方法将有所不同。 - Rob M.
2
navigator.vendor即使在模拟iPhone时也总是返回Google Inc. - colder
@AliNaciErdem 当制作混合应用程序(支持浏览器/ Web 应用程序和移动设备应用程序)时,这非常有用,有时您希望根据在浏览器中还是智能设备应用程序中加载库/脚本。示例:cordova.js - ekerner
1个回答

7

可以通过检查navigator.plugins.length来确定浏览器类型。 移动浏览器没有插件,因此navigator.plugins.length等于0; 桌面浏览器通常有插件,因此我们可以通过插件数组的长度来区分浏览器。


9
我认为,我们也可以使用navigator.platform属性。 - Kamil Szymański
4
当Chrome模拟iOS时,navigator.plugins.length === 0不再起作用。 - fregante
@KamilSzymański 对我来说效果很棒。 - Roee
4
确定这一点的明确方法是检查 navigator.maxTouchPoints > 1,因为 Chrome 模拟设备始终只有一个触摸点(即您的鼠标光标),而实际(现代)移动设备始终有多个触摸点,而没有触摸支持的设备始终为 0。不客气。 - Ivan
3
@blackbiron 我测试过了:我已经验证了当移动仿真未运行时,触摸屏幕电脑上的 navigator.maxTouchPoints 为10,但是当移动仿真运行时,它为1。所以这是个好消息。 - Marc Durdin
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接