61

为了遵循最佳实践,我们尝试根据您使用的设备使用正确的 JavaScript/jQuery 事件。例如,我们正在构建一个移动网站,该网站的标签具有点击或触摸事件。对于 iPhone,我们想使用“touchstart”事件。在我们将该处理程序绑定到对象之前,我们想测试他们的设备是否支持“touchstart”。如果没有,那么我们将绑定“onclick”。

做这个的最好方式是什么?

4

4 回答 4

99

您可以检测事件是否支持:

if ('ontouchstart' in document.documentElement) {
  //...
}

看看这篇文章:

那里发布的isEventSupported功能非常擅长检测各种事件,并且它是跨浏览器的。

于 2010-05-26T19:03:42.417 回答
12

使用此代码检测设备是否支持触摸。

也适用于使用“MSPointerDown”事件而不是“touchmove”的 Windows 8 IE10

var supportsTouch = false;
if ('ontouchstart' in window) {
    //iOS & android
    supportsTouch = true;

} else if(window.navigator.msPointerEnabled) {

    // Windows
    // To test for touch capable hardware 
    if(navigator.msMaxTouchPoints) {
        supportsTouch = true;
    }

}
于 2013-01-14T14:44:11.767 回答
3

您可以检查是否typeof document.body.ontouchstart == "undefined"回退到正常的 dom 事件

于 2010-05-26T19:05:57.093 回答
1

我做了一个完整的演示,可以在每个浏览器中使用这个问题的解决方案的完整源代码:Detect touch screen devices in Javascript

于 2011-05-12T03:09:34.520 回答