我正在研究基于触摸的JS应用程序,我已经研究了Flex和Royal滑块作为示例。我注意到,两个滑块在获得touchmove
事件时的行为类似:
var started,touched ;
el.bind('touchstart',function(e){
started = Number(new Date()) ;
// Get pageX and pageY etc...
}) ;
el.bind('touchmove',function(e){
touched = Number(new Date()) ;
if (started-touched > 500) {
// Handle touch moves etc...
}
}) ;
我的JS应用在没有这些功能的情况下可以无缝运行,但是为什么他们需要这样做?为什么他们要等待500毫秒才能获得移动数据?
我相信这是某种敏感性设置。仅当用户在设备上移动手指至少500毫秒(在此示例中)时,您才想注册触摸移动(拖动)事件。
这对于区分点击和拖动很有用。否则,如果用户在单击(例如)按钮时略微移动其手指,则该应用程序还将注册拖动。由于某些控件同时接受这两个事件,因此可能导致错误的行为。