如何检测设备模式仿真?

Gaj*_*jus 3 javascript webkit

参考 Chrome 模拟设备分辨率和触摸事件的能力:https : //developer.chrome.com/devtools/docs/device-mode

实际问题:

'ontouchstart' in document.documentElement
Run Code Online (Sandbox Code Playgroud)

在设备仿真模式下返回false(当它实际上能够执行触摸事件时)。因此,我需要一个设备模式仿真的例外。

hex*_*lys 5

您需要ontouchstart在窗口中检查。不是 document.documentElement。

将通过以下方式检测触摸事件:

'TouchEvent' in window && 'ontouchstart' in window
Run Code Online (Sandbox Code Playgroud)

我应该提到我不包括window.DocumentTouchModernizr 使用的方法。它仅适用于 Firefox < 25,并且 Mozilla 在 Windows 上放弃了 Touch Metro UI。所以我看不到任何合理或相关的浏览器使用来真正证明它的合理性。虽然TouchEvent in window不是必需的,但我认为检查 API 的存在也更有利于未来的证明和技术上的正确。

有关触摸事件检测的更多详细信息,请参阅最新的Modernizr 触摸事件功能检测,并在评论中提供链接和参考。