如何使用JS/jQuery检查浏览器的touchstart支持?

Ale*_*lex 53 javascript iphone mobile jquery unobtrusive-javascript

为了遵循最佳实践,我们尝试根据您使用的设备使用正确的JavaScript/jQuery事件.例如,我们正在构建一个移动网站,其中包含一个带有onclick或touch事件的标记.对于iPhone,我们想使用"touchstart"活动.在将该处理程序绑定到对象之前,我们想测试他们的设备是否支持"touchstart".如果没有,那么我们将绑定"onclick".

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

CMS*_*CMS 90

您可以通过以下方式检测事件是否受支持:

if ('ontouchstart' in document.documentElement) {
  //...
}
Run Code Online (Sandbox Code Playgroud)

看看这篇文章:

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

  • 这仅检测**浏览器**是否支持触摸事件,它不确定**设备**是否支持它们.在非触控设备上使用Chrome进行此操作. (16认同)
  • @RobG我在Chrome 35.0.1916.153 m的非触摸式笔记本电脑上运行了这个,并且按照预期得到了"假".我错过了什么吗? (3认同)

Geo*_*kos 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;
    }

}
Run Code Online (Sandbox Code Playgroud)

  • 为什么不把它简化为单线?``var supportsTouch =('ontouchstart'在窗口中|| window.navigator.msPointerEnabled)`` (3认同)