javascript長按事件實現方式


先貼出實踐中實現的代碼,參考(https://segmentfault.com/q/1010000011640937?sort=created):

               parentObj.addEventListener("touchstart", function (e) {
                    console.log('touchstart');
                    timer = setTimeout(function () {
                        console.log('LongPress');
                        e.preventDefault();
                        LongPress(parentObj);
                    }, 800);
                });
                parentObj.addEventListener("touchmove", function (e) {
                    console.log('touchmove');
                    clearTimeout(timer);
                    timer = 0;
                });
                parentObj.addEventListener("touchend", function (e) {
                    console.log('touchend');
                    clearTimeout(timer);
                    //if (timer != 0) {
                    //    alert('這是點擊,不是長按');
                    //}
                    return false;
                });

  

先獲取元素對象,然后設置ontouchstart和ontouchend事件,注意,這里的是事件,和touchstart(方法)有所區別,然后在手機瀏覽器中,為了避免長按彈出窗口,設置e.preventDefafult()來屏蔽彈出。

 

其實,這些是比較容易,最常見的實現方式,在網上找資料的時候發現很多其他的實現,比如利用zepto.js插件,這是一個jQuery.js的移動端實現,通過這個庫,實現方式如下:

,這個實現的鏈接(https://segmentfault.com/q/1010000003956296

自己也實現了,調試過程中,發現,在微信開發者工具里面,沒有問題,longTap能調用,在手機上,就幾乎調用不成功,觸發的概率非常小,不知道是因為和手機上長按時有微小移動有關系。所以最終放棄了這個實現。

 

 

**********************************************分割線**********************************************

關於長按的彈窗菜單怎么屏蔽,網上查了很多資料,都是設置e.preventDefault(),來實現,但是一直用的是
//obj.addEventListener("touchstart", function (e) {
// e.preventDefault();
//}, false);
這個設置的應該是屏蔽觸屏的反應,設置屏蔽彈出菜單的應該是這樣:
document.oncontextmenu = function (e) {
e.preventDefault();
};


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM