我有一个Backbone应用程序,我正在使用Modernizr。
在触摸设备上,我无法滑动页面将其向下滚动,因为触摸事件会触发Backbone侦听器和一系列复杂事件,而不是通常的页面滚动。
这是我的代码:
events: function () {
if (this.modernizr.touch) {
return {
'touchstart .hover': 'onTouchStart'
};
} else {
return {
'mousemove .hover': 'onMouseMove'
};
}
}
// onTouchStart and onMouseMove both fire a listener
我应该使用什么事件来区分滑动和点击,以便滑动允许用户正常移动页面? (我不能轻易在触摸设备上进行测试,只是因为你知道这不是一个懒惰的问题。)
答案 0 :(得分:0)
您的onTouchStart
函数是否正在调用event.preventDefault()
?如果是这样,那将停止触发本机滑动滚动行为的事件。删除该调用应该允许用户正常滚动。
This HTML5 Rocks article详细介绍了触摸事件如何传播/级联。
旁注:你在这里使用的模式做了一些危险的假设IMO:
Modernizr.touch
为false
,仅绑定鼠标事件,具有混合设备的用户(具有触控功能的笔记本电脑等)将无法使用鼠标/触控板;为什么不直接绑定两个事件?touchstart
或 mousemove
(键盘用户,Windows智能手机等),因此无法使用此功能;如果你绑定到click
事件那么作为后备,那么你可以覆盖它们我最近wrote an article关于我认为可以涵盖所有可能性的“黄金模式”,如果你有兴趣的话。
当然,如果这些处理程序提供的功能不重要,这些事情可能不是问题。