【问题标题】:How to detect if a mobile device is emulated by Google Chrome? [closed]如何检测移动设备是否由 Google Chrome 模拟? [关闭]
【发布时间】:2015-03-20 22:42:34
【问题描述】:

有没有办法区分真正的移动设备和 Google Chrome 模拟的设备? 请注意,谷歌浏览器可以模拟用户代理、触摸屏、屏幕分辨率和加速度计。 我需要知道一些无法模拟但可以被 javascript 检测到的功能。

【问题讨论】:

  • 你为什么想要这样的东西? (只是好奇)
  • 您要访问哪些无法模拟的功能?
  • 你检查过“window.navigator”属性吗?
  • 是否有您希望区分的特定设备(例如 iPhone)?对于不同的设备,方法会有所不同
  • navigator.vendor 总是返回 Google Inc. 甚至模拟 iPhone。

标签: javascript php android mobile


【解决方案1】:

可以检查 navigator.plugins.length。 移动浏览器没有插件,所以 navigator.plugins.length 等于 0; 桌面浏览器一般都有插件,所以我们可以通过plugins数组的长度来区分浏览器。

【讨论】:

  • 我想说,我们也可以使用 navigator.platform 属性。
  • 这不再有效。 navigator.plugins.length === 0 在 Chrome 上模拟 iOS。
  • var isSmartDevice = /* 移动设备,如果是 android 或 iOS,而不是在 mac 或 win pc 中模拟(用于开发)*/ (navigator.userAgent.match(/(android|ip(hone|ad|od) ))/i) && (!navigator.platform || !navigator.platform.match(/(win|mac)/i))) /* 或者如果是 windows phone 或 blackberry (windows 中没有 dev) */ || navigator.userAgent.match(/(windows phone|iemobile|wpdesktop|blackberry)/i);
  • 确定这一点的最终方法是检查 navigator.maxTouchPoints > 1 因为 Chrome 模拟设备总是只有 1 个接触点(即您的鼠标光标),而实际(现代)移动设备总是有更多大于 1,不支持触摸的设备将始终为 0。不客气。
  • @blackbiron 我对此进行了测试:我已经验证navigator.maxTouchPoints 在移动仿真运行时在触摸屏计算机上为 10,但在移动仿真运行时为 1跑步。所以这是个好消息。
猜你喜欢
  • 2014-12-08
  • 2013-05-21
  • 2019-12-24
  • 1970-01-01
  • 1970-01-01
  • 2022-09-30
  • 1970-01-01
  • 2015-01-06
相关资源
最近更新 更多