MUI 將tap模擬成原生click體驗

2022-04-29 08:54:06 字數 2326 閱讀 4433

那麼,我們應該怎麼來實現呢?

下面是詳細的填坑歷程。。。。。。

//直接對dom新增touchend,這種方法只能針對位置不變且並沒有新增longtap事件的dom有效

//如果在listview中,你上下滑動,那就歇菜了。

//那麼自然而然就想到了touch.target的位移,並做出判斷是下滑還是單擊。

//自己去寫複雜度、**量估計會很可觀。

//因此就想到了了在原有的框架**上去實現。

//下面就到了坑2

document.getelementbyid("").('touchend', function() );

坑2.1 自定義事件偵聽機制

mui沒有提供類似於jq.data('events')獲取事件列表的機制,另外官方也推薦使用addeventlistener去繫結事件。

我要去獲取當前dom的事件列表應該怎麼做呢?

你問我問毛要去獲取dom的事件列表,,,

呵呵,我總要知道dom有木有繫結longtap事件好做規避吧

csdn的這個帖子看似有用

function addevent(dom,type,fn)  else if(document.attachevent)  else ;

dom["listener-"+type]=!0;

}

實際上並沒有什麼卵用

思想是好的.....

我總不能每次addeventlistener都去調一下這個方法吧!

坑2.2 使用geteventlisteners

找啊找,終於找到了geteventlisteners()這個全域性方法,在chrome和safari控制台中測試都木有問題。

喜出望外......

這下終於能解決問題了

於是有了以下的方法

var getevents = function(obj) 

var haseventype = function(obj, e)

呼叫下試試

if (!haseventype(target, 'longtap')) {}
報錯

geteventlistenersis undefined

r u kidding?!!!!

你丫在逗我.............

我瞬間感受到了深深地惡意

原來這個方法只能在控制台中用,

呵呵,人艱不拆......

坑2.3 使用全域性變數規避

給mui新增乙個全域性變數islongtapatived,看變數名就知道什麼意思吧

mui.gestures.longtap.js中初始化,在handle中啟用

(function($, name) , options.holdtimeout);

break;

} };

});})(mui, 'longtap');

mui.gestures.tap.js中判斷有無啟用

var handle = function(event, touch)  else 

//重置

$.islongtapatived = false;}}

break;

} };

想法是美好的,現實是他麼殘酷的。無論有無longtap事件,都要走一遍longtaphandle**

於是$.islongtapatived === true;

於是 永遠triggertap事件

呵呵,想死的心都有了

路子看來是走對了,但是應該怎麼做???

終極解決方案

mui.islongtapatived依然新增,只是在每一次dom新增的longtap事件內啟用

document.queryselector("#").addeventlistener('longtap',function());
這樣對開發者是不友好的,不過暫時沒辦法,只能如此取捨了

**已提交至

並推送給官方

mui和zepto的tap事件

zepto.js和mui一起使用的時候,tap事件會發生兩次,這時只要不引用zepto.js的touch.js就可以了,只用mui的tap事件 b5教程網 1.zepto.js和mui一起使用的時候,tap事件會發生兩次,這時只要不引用zepto.js的touch.js就可以了,只用mui的tap事...

很高興,成功將DVBBS模擬成靜態HTML頁面

更新 20041015 支援 http cs.12986.更多 http 12986.n989c26.aspx 很高興,成功將dvbbs模擬成靜態html頁面 isapi rewrite已經成功安裝了 採用的是http helicontech.download isapi rewrite 安裝的方法...

NOIP模擬 成績調研

這題明明是道水題,但是卻不小心打錯了。做法大致是每次搜到乙個i,對於每個等級k,都找乙個 x,y 滿足 x y,i 是合法的,然後用線段樹求一下區間的交集就好了。每次多找到乙個a i 是,左右區間本來都要向右移動的 如果已經有的話 但是我的右區間移動了,左區間卻沒有移動,而且我並沒有考慮l 0的情況...