touchmove即为滑动事件
还有其他触摸事件,都给列一下:
touchstart事件:当手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上也会触发。
touchmove事件:当手指在屏幕上滑动的时候连续地触发。在这个事件发生期间,调用preventDefault()事件可以阻止滚动。
touchend事件:当手指从屏幕上离开的时候触发。
touchcancel事件:当系统停止跟踪触摸的时候触发。关于这个事件的确切出发时间,文档中并没有具体说明,咱们只能去猜测了。
touchstart :手指触摸到一个 DOM 元素时触发。
touchend :手指从一个 DOM 元素上移开时触发。
touchmove :手指在一个 DOM 元素上滑动时触发。
思路是,在触发 touchstart 时设置一个定时器 setInterval(longPress(),500) ,指定时间后执行长按的操作(如500ms),在执行完长按的操作和触发 touchend 之后清除定时器。
这样一来,如果没有超过500ms,手指离开屏幕,触发 touchend ,则 longPress 不会执行。如果时间时间超过500ms,则 longPress 执行一次。
由于ontouchend优先触发于click
所以思路就是给全局document同时绑定touch和click
~function()//创建作用域{
var Quest = [],Judge = function(Event)
{
Type = Event.type//得到事件类型并记录
for (var F = 0F < Quest.length++F) Quest[F][0].addEventListener
(Type,Quest[F][1])//对尚未判断类型时保存的信息进行处理,重新绑定
document.removeEventListener('touchend',Judge)
document.removeEventListener('click',Judge)//解除判断函数的绑定
console.log(Type)
},Type
document.addEventListener('touchend',Judge)
document.addEventListener('click',Judge)//绑定判断函数
window.SmartBind = function(Obj,Handle)//向全局添加自动绑定函数
{
if (void 0 === Type) return Quest.push([Obj,Handle])//若尚未判断浏览器类型则先保存需要绑定的函数
Obj.addEventListener(Type,Handle)//绑定事件
}
}()