亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

iScroll中事件點擊觸發兩次解決方案

2024-05-06 16:16:28
字體:
來源:轉載
供稿:網友
iScroll是我們在做手機網頁中常用的滑動控件之一。單說其功能已相當豐富。但個別時候也是會掉坑的,正好這次就遇上了。在android的app中嵌入網頁時不少手機會出現一次點擊兩次觸發的現象。經過一段時間的折騰,總算想到了一個還算合理的解決放案。
 

  之前也看了很多朋友的文章里有講這個問題。比如使用一個變量記錄執行的間隔時間什么的。感覺每次都要去擼一下,比較累人。本人喜歡搬磚前先選工具。其實解決這個方法很簡單。iScroll呢其實是截獲了點擊瀏覽器時的touchstart和touchend事件。在touchend的時候使用js去觸發元素的onclick事件(_end這個函數)。而在實際操作中,先執行了touchend,然后再執行了一次onclick的相關函數。這樣就形成了頭疼的一次點擊兩次觸發。這本來就一個不是問題的問題。之所以說這是個問題,是因為這樣是我們不得不去看一看iScroll的源代碼。解決這個問題的途徑就是拒絕第二次執行函數。而我的邏輯也正是如此。我們可以在執行完_end函數中的觸發click事件的代碼后,移除onclick事件上綁定的函數。然后在定時幾百毫秒之后在重新把這個事件添加上去。舉個例子:

 

復制代碼代碼如下:

//處理之前
<span onclick="test()">雙擊測試</span>
//處理之后
<span onclick="void(0)">雙擊測試</span>

 

在移除onclick相關函數之后這個第二次就自然不會再觸發test函數了。為了下一次還能繼續使用我們可以使用setTimeout的方式把onclick的內容還原回去。

改造后的iscroll源代碼(約550行~570行的樣子,_end函數中):

 

復制代碼代碼如下:

that.doubleTapTimer = setTimeout(function () {
                            that.doubleTapTimer = null;
                            // Find the last touched element
                            target = point.target;
                            while (target.nodeType != 1) target = target.parentNode;
                            if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA') {
                                ev = doc.createEvent('MouseEvents');
                                ev.initMouseEvent('click', true, true, e.view, 1,
                                    point.screenX, point.screenY, point.clientX, point.clientY,
                                    e.ctrlKey, e.altKey, e.shiftKey, e.metaKey,
                                    0, null);
                                ev._fake = true;
                                target.dispatchEvent(ev);
                                /**以下代碼為新增代碼**/
                                //找到綁定click事件的元素。
                                var obj = $(target).attr("onclick") != null ? $(target) : $(target).parents("[onclick]")[0];
                                if (obj != null) {
                                    var clickContent = $(obj).attr("onclick");
                                    if (clickContent != "void(0)") {
                                        //利用新的屬性來存儲原有的click函數
                                        $(obj).attr("data-clickbak", $(obj).attr("onclick"));
                                        //改變onclick屬性值。
                                        $(obj).attr("onclick", "void(0)");
                                        //防止暴力點擊
                                        if (that.hashBox.length>0) {
                                            for (var _i = 0; _i < that.hashBox.length; _i++)
                                            {
                                                if (that.hashBox[_i] == $(obj)) {
                                                    that.hashBox.splice(_i, 1);
                                                    break;
                                                }
                                            }
                                        }  
                                        that.hashBox.push($(obj));
                                        that._clickBack();
                                    }
                                }//end
                            }
                        }, that.options.zoom ? 250 : 0);

 

_clickBack函數及hashBox代碼片段(加在_end函數之前)

 

復制代碼代碼如下:

       hashBox: [],
       /*還原被點擊對象的事件*/
        _clickBack: function () {
            var that = this;
            setTimeout(function () {
                if (that.hashBox.length > 0) {
                    var obj = that.hashBox.pop();
                    obj.attr("onclick", obj.attr("data-clickbak"));
                    if (that.hashBox.length > 0) that._clickBack();
                }
            }, 500);
        }

 

當然,也可以不修改 iscroll源代碼,通過一個公共函數來實現。

以上就是本文所講述的全部內容了,希望對大家學習使用iscroll滑動控件有所幫助


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
2018国产精品视频| 欧美日韩国产一区在线| 国产精品久久久久av免费| 国自产精品手机在线观看视频| 国产精品视频久久久久| 国产视频在线观看一区二区| 日韩精品在线免费播放| 亚洲电影在线观看| 少妇高潮久久久久久潘金莲| 欧美伦理91i| 最近2019年好看中文字幕视频| 91精品成人久久| 懂色av中文一区二区三区天美| 日韩av中文字幕在线| 成人性生交大片免费观看嘿嘿视频| 国产精品一区=区| 91精品国产综合久久香蕉的用户体验| 国产九九精品视频| 日韩精品免费在线视频观看| 亚洲色图校园春色| 国内精品国产三级国产在线专| 亚洲福利在线观看| 亚洲精品在线看| 日韩免费在线免费观看| 九九久久精品一区| 国产自摸综合网| 国产在线a不卡| 综合欧美国产视频二区| 在线观看日韩视频| 亚洲国产精彩中文乱码av| 欧美激情精品久久久久久免费印度| 欧美日韩国产成人在线观看| 亚洲一区亚洲二区| 亚洲国产精品悠悠久久琪琪| 亚洲欧美在线第一页| 一区二区三区视频免费| 欧美激情精品久久久久久| 亚洲第一区第二区| 国产成人精品电影| 日韩在线视频观看正片免费网站| 国产婷婷色综合av蜜臀av| 久久97久久97精品免视看| 亚洲国产精品大全| 久久精品这里热有精品| 精品国产一区二区三区久久| 中文字幕精品网| 国产精品美女午夜av| 欧美极品美女视频网站在线观看免费| 色久欧美在线视频观看| 久久久999精品视频| 亚洲奶大毛多的老太婆| www.日韩av.com| 欧美三级欧美成人高清www| 成人亚洲综合色就1024| 尤物yw午夜国产精品视频| 日韩av成人在线观看| 神马国产精品影院av| 4438全国亚洲精品在线观看视频| 欧美激情成人在线视频| 精品网站999www| 欧美精品久久久久久久| 国产成人高清激情视频在线观看| 九九精品在线观看| 国产精品香蕉av| 欧美一级黄色网| 国产成人精品免高潮费视频| 亚洲精品电影久久久| 有码中文亚洲精品| 亚洲成人精品在线| 国产视频精品在线| 国产精品自产拍在线观看| 日韩精品视频免费在线观看| 亚洲一区二区三区视频| 欧美日韩裸体免费视频| 中文字幕日韩精品有码视频| 色综合久久久久久中文网| 亚洲精品色婷婷福利天堂| 国产精品视频中文字幕91| 国产成人欧美在线观看| 91人成网站www| 欧美日韩亚洲天堂| 欧美成年人视频网站欧美| 亚洲美女中文字幕| 亚洲免费小视频| 一区二区三区视频在线| 亚洲欧洲在线免费| 亚洲人成网站999久久久综合| 国模私拍视频一区| 国产成人一区二区三区电影| 欧美黑人性猛交| 午夜精品蜜臀一区二区三区免费| 国产精品久久久久久久久久东京| 欧美国产激情18| 国产精品一区二区三区成人| 亚洲最大成人在线| 欧美日韩亚洲精品内裤| 色先锋久久影院av| 成人97在线观看视频| 亚洲bt欧美bt日本bt| 精品国产精品自拍| 亚洲性xxxx| 日韩亚洲欧美成人| 久久在线免费观看视频| 亚洲天堂色网站| 亚洲成人动漫在线播放| 在线视频欧美性高潮| 久久人人爽人人| 青青草原一区二区| 成人97在线观看视频| 日韩经典中文字幕| 日韩69视频在线观看| 欧美精品在线观看91| 国产成人午夜视频网址| 成人国产精品久久久久久亚洲| 欧洲日韩成人av| 国产免费一区二区三区香蕉精| 免费不卡在线观看av| 国产精品一久久香蕉国产线看观看| 欧美成人黑人xx视频免费观看| 欧美成年人在线观看| 91系列在线播放| 红桃视频成人在线观看| 性欧美xxxx视频在线观看| 91精品美女在线| 2019中文字幕在线观看| 久久黄色av网站| 亚洲欧洲一区二区三区在线观看| 精品视频久久久| 国产精品日韩欧美大师| 岛国av午夜精品| 美女性感视频久久久| 亚洲偷欧美偷国内偷| 国产97在线|日韩| 久久精品色欧美aⅴ一区二区| 欧美精品久久久久| 久久国产精品久久久久| 亚洲精品久久视频| 国产精品久久久亚洲| 欧美激情亚洲自拍| 欧美日韩久久久久| 国产丝袜一区二区三区免费视频| 国产在线98福利播放视频| 久久97久久97精品免视看| 欧美剧在线观看| 国产精品亚洲视频在线观看| 日韩欧美在线视频观看| 久久99热精品这里久久精品| 国产精品偷伦一区二区| 在线视频欧美日韩| 一区二区av在线| 欧美精品久久久久| 亚洲免费人成在线视频观看| 日韩精品在线免费观看视频| 精品久久久免费| 91精品中国老女人| 色悠悠国产精品| 97久久精品在线| 欧美最顶级丰满的aⅴ艳星| 久久久久国产精品免费| 国产日韩在线亚洲字幕中文| 成人性生交xxxxx网站| 视频在线观看99| 色妞一区二区三区| 国产视频精品在线|