做app开发时,用到了webview,需要监听webview的长按事件,使用原生的js处理监听如下:
var timeOutEvent = 0; //定时器 //开始按 function gtouchstart() { timeOutEvent = setTimeout("longPress()", 500); //这里设置定时器,定义长按500毫秒触发长按事件,时间可以自己改,个人感觉500毫秒非常合适 return false; }; //手释放,如果在500毫秒内就释放,则取消长按事件,此时可以执行onclick应该执行的事件 function gtouchend() { clearTimeout(timeOutEvent); //清除定时器 if (timeOutEvent != 0) { //这里写要执行的内容(尤如onclick事件) //alert("你这是点击,不是长按"); } return false; }; //如果手指有移动,则取消所有事件,此时说明用户只是要移动而不是长按 function gtouchmove() { clearTimeout(timeOutEvent); //清除定时器 timeOutEvent = 0; }; //真正长按后应该执行的内容 function longPress() { timeOutEvent = 0; //执行长按要执行的内容,如弹出菜单 //alert("长按事件触发"); do_Page.fire("showTool",{"index":index,"url":images[index].source}); }
这里设置500ms点击为长按处理,主要用到了3个事件:
ontouchstart、ontouchmove、ontouchend,主要思路:
在ontouchstart事件中启动一个定时器,定时器间隔时间为500ms,即500ms后自动执行longPress逻辑,并清除定时器事件,ontouchend表示tap弹起,这时直接清除定时器,ontouchmove表示手指滑动,直接清除定时器即可,这样就简单实现了长按事件监听处理。