为了遵循最佳实践,我们尝试根据您使用的设备使用正确的 JavaScript/jQuery 事件。例如,我们正在构建一个移动网站,该网站的标签将具有点击或触摸事件。对于 iPhone,我们想使用“touchstart”事件。在我们将该处理程序绑定到对象之前,我们想测试他们的设备是否支持“touchstart”。如果没有,那么我们将绑定“onclick”。
做这个的最好方式是什么?
为了遵循最佳实践,我们尝试根据您使用的设备使用正确的 JavaScript/jQuery 事件。例如,我们正在构建一个移动网站,该网站的标签将具有点击或触摸事件。对于 iPhone,我们想使用“touchstart”事件。在我们将该处理程序绑定到对象之前,我们想测试他们的设备是否支持“touchstart”。如果没有,那么我们将绑定“onclick”。
做这个的最好方式是什么?
您可以通过以下方式检测事件是否受支持:
if ('ontouchstart' in document.documentElement) {
//...
}
看看这篇文章:
isEventSupported
那里发布的函数非常擅长检测各种事件,而且它是跨浏览器的。
使用此代码来检测设备是否支持触摸。
也适用于使用“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;
}
}
您可以检查是否typeof document.body.ontouchstart == "undefined"
回退到正常的 dom 事件
我做了一个完整的演示,可以在每个浏览器中使用这个问题的解决方案的完整源代码:Detect touch screen devices in Javascript。