为了遵循最佳实践,我们尝试根据您使用的设备使用正确的JavaScript/jQuery事件。例如,我们正在构建一个移动网站,其中包含一个标记,其中包含onclick或touch事件。在iPhone的情况下,我们想使用“touchstart”事件。我们希望测试他们的设备是否支持“touchstart”,然后将该处理程序绑定到该对象。如果没有,那么我们将绑定“onclick”。如何使用JS/jQuery检查浏览器是否支持touchstart?
这样做的最好方法是什么?
为了遵循最佳实践,我们尝试根据您使用的设备使用正确的JavaScript/jQuery事件。例如,我们正在构建一个移动网站,其中包含一个标记,其中包含onclick或touch事件。在iPhone的情况下,我们想使用“touchstart”事件。我们希望测试他们的设备是否支持“touchstart”,然后将该处理程序绑定到该对象。如果没有,那么我们将绑定“onclick”。如何使用JS/jQuery检查浏览器是否支持touchstart?
这样做的最好方法是什么?
如果该事件由支持您可以检测:
if ('ontouchstart' in document.documentElement) {
//...
}
给看看这篇文章:
发表那里isEventSupported
功能,才是真的好在检测各种各样的事件时,它是跨浏览器的。
您可以检查是否typeof document.body.ontouchstart == "undefined"
回落到正常的DOM事件
我做了充分的笔画演示,在每一个浏览器这个问题的解决方案的完整源代码的工作:Detect touch screen devices in Javascript。
使用此代码来检测设备是否支持触摸。
也可在Windows 8 IE10它使用的不是“touchmove”
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;
}
}
为什么不把它简化为单行? ''var supportsTouch =('ontouchstart'in window || window.navigator.msPointerEnabled)'' – 2017-01-10 12:35:38
不幸的是,这对于HP笔记本电脑(不带触摸屏)的Windows 10上的ie 11无效。它错误地说supportsTouch = true。但是当我将某些东西绑定到“touchstart”时,它永远不会被执行。任何方式在这个? – 2017-02-08 21:53:13
这是错的。指针API不仅适用于触摸设备。它适用于每个几乎每个输入设备。 – Nilpo 2018-02-18 04:02:09
我有点动心+1这一点,但我知道,Firefox将返回'FALSE'这里“MSPointerDown”事件错误的原因。对于以这种方式检查的所有事件,Firefox都会返回false(我知道,这是Fx很糟糕的罕见情况之一)。文章确实进入了,所以你得到你的+1 ;-) – 2010-05-26 19:26:04
伟大的资源。感谢您的快速帮助! – Alex 2010-05-26 20:47:35
这只会检测**浏览器**是否支持触摸事件,并不能确定**设备**是否支持它们。在非触控设备上使用Chrome进行试用。 – RobG 2012-08-14 04:13:34