如何检查浏览器使用JS / jQuery的touchstart支持?
为了遵循最佳实践,我们试图根据您使用的设备使用正确的JavaScript / jQuery事件。 例如,我们正在构build一个移动网站,其中包含一个标记,其中包含一个onclick或touch事件。 在iPhone的情况下,我们想使用“touchstart”事件。 我们想testing他们的设备是否支持“touchstart”,然后再将该处理程序绑定到该对象。 如果没有,那么我们将绑定“onclick”。
什么是最好的方法来做到这一点?
您可以通过以下方式检测事件是否受支持:
if ('ontouchstart' in document.documentElement) { //... }
看看这篇文章:
- 在没有浏览器嗅探的情况下检测事件支持
在isEventSupported
发布的isEventSupported
函数非常擅长检测各种事件,它是跨浏览器的。
使用此代码来检测设备是否支持触摸。
也适用于使用“MSPointerDown”事件而不是“touchmove”的Windows 8 IE10
var supportsTouch = false; if ('ontouchstart' in window) { //iOS & android supportsTouch = true; } else if(window.navigator.msPointerEnabled) { //Win8 supportsTouch = true; }
你可以检查typeof document.body.ontouchstart == "undefined"
是否回退到正常的dom事件
我做了一个完整的演示,在每个浏览器中使用这个问题的解决scheme的完整源代码: 在Javascript中检测触摸屏设备 。