Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检测移动设备是否被Google Chrome模拟?_Javascript_Php_Android_Mobile - Fatal编程技术网

Javascript 如何检测移动设备是否被Google Chrome模拟?

Javascript 如何检测移动设备是否被Google Chrome模拟?,javascript,php,android,mobile,Javascript,Php,Android,Mobile,有没有办法区分真实的移动设备和谷歌Chrome模拟的设备? 请注意,Google Chrome可以模拟用户代理、触摸屏、屏幕分辨率和加速计。 我需要知道一些无法模拟但可以被javascript检测到的功能。可以检查navigator.plugins.length。 移动浏览器没有插件,因此navigator.plugins.length等于0; 桌面浏览器一般都有插件,所以我们可以根据插件数组的长度来区分浏览器。为什么要这样?(出于好奇)您想访问哪些无法模拟的功能?您是否检查了“window.n

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

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

为什么要这样?(出于好奇)您想访问哪些无法模拟的功能?您是否检查了“window.navigator”属性。是否有您想要区分的特定设备(例如iPhone)?对于不同的设备,
navigator,方法会有所不同。供应商
总是返回
Google Inc.
甚至模拟iPhone。我想说的是,我们也可以使用navigator.platform属性。这不再有效<代码>navigator.plugins.length==0在Chrome上模拟iOS.var Issmart设备=/*如果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中没有开发)*/| | navigator.userAgent.match(/(windows phone | iemobile | wpdesktop | blackberry)/i);确定这一点的最终方法是检查
navigator.maxTouchPoints>1
,因为Chrome模拟设备在实际(现代)时总是只有一个触点(即鼠标光标)移动设备将始终具有多个1,而不支持触摸的设备将始终具有0。不客气。@blackbiron我测试了这个:我已经验证了
navigator.maxTouchPoints
在触摸屏计算机上在移动仿真未运行时为10,但在移动仿真运行时为1。这是个好消息。