做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表示手指滑動,直接清除定時器即可,這樣就簡單實現了長按事件監聽處理。
