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

首頁 > 網站 > WEB開發 > 正文

移動端touch事件

2024-04-27 15:19:30
字體:
來源:轉載
供稿:網友
var touchEvent = {}touchEvent =function() { var self=this; /*單次觸摸事件*/ self.tap=function(element, fn) { var startTx, startTy; element.addEventListener('touchstart', function(e) { var touches = e.touches[0]; startTx = touches.clientX; startTy = touches.clientY; }, false); element.addEventListener('touchend', function(e) { var touches = e.changedTouches[0], endTx = touches.clientX, endTy = touches.clientY; // 在部分設備上 touch 事件比較靈敏,導致按下和松開手指時的事件坐標會出現一點點變化 if(Math.abs(startTx - endTx) < 6 && Math.abs(startTy - endTy) < 6) { fn(); } }, false); }, /*兩次觸摸事件*/ self.doubleTap=function(element, fn) { var isTouchEnd = false, lastTime = 0, lastTx = null, lastTy = null, firstTouchEnd = true, body = document.body, dTapTimer, startTx, startTy, startTime; element.addEventListener('touchstart', function(e) { if(dTapTimer) { clearTimeout(dTapTimer); dTapTimer = null; } var touches = e.touches[0]; startTx = touches.clientX; startTy = touches.clientY; }, false); element.addEventListener('touchend', function(e) { var touches = e.changedTouches[0], endTx = touches.clientX, endTy = touches.clientY, now = Date.now(), duration = now - lastTime; // 首先要確保能觸發單次的 tap 事件 if(Math.abs(startTx - endTx) < 6 && Math.abs(startTx - endTx) < 6) { // 兩次 tap 的間隔確保在 500 毫秒以內 if(duration < 301) { // 本次的 tap 位置和上一次的 tap 的位置允許一定范圍內的誤差 if(lastTx !== null && Math.abs(lastTx - endTx) < 45 && Math.abs(lastTy - endTy) < 45) { firstTouchEnd = true; lastTx = lastTy = null; fn(); } } else { lastTx = endTx; lastTy = endTy; } } else { firstTouchEnd = true; lastTx = lastTy = null; } lastTime = now; }, false); // 在 iOS 的 safari 上手指敲擊屏幕的速度過快, // 有一定的幾率會導致第二次不會響應 touchstart 和 touchend 事件 // 同時手指長時間的touch不會觸發click if(~navigator.userAgent.toLowerCase().indexOf('iphone os')) { body.addEventListener('touchstart', function(e) { startTime = Date.now(); }, true); body.addEventListener('touchend', function(e) { var noLongTap = Date.now() - startTime < 501; if(firstTouchEnd) { firstTouchEnd = false; if(noLongTap && e.target === element) { dTapTimer = setTimeout(function() { firstTouchEnd = true; lastTx = lastTy = null; fn(); }, 400); } } else { firstTouchEnd = true; } }, true); // iOS 上手指多次敲擊屏幕時的速度過快不會觸發 click 事件 element.addEventListener('click', function(e) { if(dTapTimer) { clearTimeout(dTapTimer); dTapTimer = null; firstTouchEnd = true; } }, false); } }, /*長按事件*/ self.longTap=function(element, fn) { var startTx, startTy, lTapTimer; element.addEventListener('touchstart', function(e) { if(lTapTimer) { clearTimeout(lTapTimer); lTapTimer = null; } var touches = e.touches[0]; startTx = touches.clientX; startTy = touches.clientY; lTapTimer = setTimeout(function() { fn(); }, 1000); e.PReventDefault(); }, false); element.addEventListener('touchmove', function(e) { var touches = e.touches[0], endTx = touches.clientX, endTy = touches.clientY; if(lTapTimer && (Math.abs(endTx - startTx) > 5 || Math.abs(endTy - startTy) > 5)) { clearTimeout(lTapTimer); lTapTimer = null; } }, false); element.addEventListener('touchend', function(e) { if(lTapTimer) { clearTimeout(lTapTimer); lTapTimer = null; } }, false); }, /*滑屏事件*/ self.swipe= function(element, fn) { var isTouchMove, startTx, startTy; element.addEventListener('touchstart', function(e) { var touches = e.touches[0]; startTx = touches.clientX; startTy = touches.clientY; isTouchMove = false; }, false); element.addEventListener('touchmove', function(e) { isTouchMove = true; e.preventDefault(); }, false); element.addEventListener('touchend', function(e) { if(!isTouchMove) { return; } var touches = e.changedTouches[0], endTx = touches.clientX, endTy = touches.clientY, distanceX = startTx - endTx distanceY = startTy - endTy, isSwipe = false; if(Math.abs(distanceX) > 20 || Math.abs(distanceY) > 20) { fn(); } }, false); }, /*向上滑動事件*/ self.swipeUp=function(element, fn) { var isTouchMove, startTx, startTy; element.addEventListener('touchstart', function(e) { var touches = e.touches[0]; startTx = touches.clientX; startTy = touches.clientY; isTouchMove = false; }, false); element.addEventListener('touchmove', function(e) { isTouchMove = true; e.preventDefault(); }, false); element.addEventListener('touchend', function(e) { if(!isTouchMove) { return; } var touches = e.changedTouches[0], endTx = touches.clientX, endTy = touches.clientY, distanceX = startTx - endTx distanceY = startTy - endTy, isSwipe = false; if(Math.abs(distanceX) < Math.abs(distanceY)) { if(distanceY > 20) { fn(); isSwipe = true; } } }, false); }, /*向下滑動事件*/ self.swipeDown= function(element, fn) { var isTouchMove, startTx, startTy; element.addEventListener('touchstart', function(e) { var touches = e.touches[0]; startTx = touches.clientX; startTy = touches.clientY; isTouchMove = false; }, false); element.addEventListener('touchmove', function(e) { isTouchMove = true; e.preventDefault(); }, false); element.addEventListener('touchend', function(e) { if(!isTouchMove) { return; } var touches = e.changedTouches[0], endTx = touches.clientX, endTy = touches.clientY, distanceX = startTx - endTx distanceY = startTy - endTy, isSwipe = false; if(Math.abs(distanceX) < Math.abs(distanceY)) { if(distanceY < -20) { fn(); isSwipe = true; } } }, false); }, /*向左滑動事件*/ self.swipeLeft= function(element, fn) { var isTouchMove, startTx, startTy; element.addEventListener('touchstart', function(e) { var touches = e.touches[0]; startTx = touches.clientX; startTy = touches.clientY; isTouchMove = false; }, false); element.addEventListener('touchmove', function(e) { isTouchMove = true; e.preventDefault(); }, false); element.addEventListener('touchend', function(e) { if(!isTouchMove) { return; } var touches = e.changedTouches[0], endTx = touches.clientX, endTy = touches.clientY, distanceX = startTx - endTx distanceY = startTy - endTy, isSwipe = false; if(Math.abs(distanceX) >= Math.abs(distanceY)) { if(distanceX > 20) { fn(); isSwipe = true; } } }, false); }, /*向右滑動事件*/ self.swipeRight= function(element, fn) { var isTouchMove, startTx, startTy; element.addEventListener('touchstart', function(e) { var touches = e.touches[0]; startTx = touches.clientX; startTy = touches.clientY; isTouchMove = false; }, false); element.addEventListener('touchmove', function(e) { isTouchMove = true; e.preventDefault(); }, false); element.addEventListener('touchend', function(e) { if(!isTouchMove) { return; } var touches = e.changedTouches[0], endTx = touches.clientX, endTy = touches.clientY, distanceX = startTx - endTx distanceY = startTy - endTy, isSwipe = false; if(Math.abs(distanceX) >= Math.abs(distanceY)) { if(distanceX < -20) { fn(); isSwipe = true; } } }, false); }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
九色精品免费永久在线| 国产91精品黑色丝袜高跟鞋| 亚洲免费视频网站| 欧美日韩国产91| 成人免费大片黄在线播放| 亚洲缚视频在线观看| 国产精品va在线| 成人淫片在线看| 色婷婷亚洲mv天堂mv在影片| 日韩亚洲欧美中文高清在线| 伊人成人开心激情综合网| 欧美视频不卡中文| 日韩av在线网站| 精品国偷自产在线视频99| 色妞在线综合亚洲欧美| www.99久久热国产日韩欧美.com| 亚洲精品成人网| 成人网址在线观看| 国产免费一区二区三区香蕉精| 国产精品免费一区二区三区都可以| 国产免费一区二区三区香蕉精| 国产日韩精品电影| 精品视频www| 九色精品免费永久在线| 亚洲美女免费精品视频在线观看| 97超级碰碰人国产在线观看| 成人免费福利视频| 亚洲国内高清视频| 国精产品一区一区三区有限在线| 97国产精品视频| 欧美在线视频观看免费网站| 欧美国产精品va在线观看| 欧美日韩国产在线播放| 韩国三级日本三级少妇99| 91黄色8090| 亚洲久久久久久久久久| 亚洲第一精品久久忘忧草社区| 国产欧美久久一区二区| 久久久精品免费| 欧美劲爆第一页| 国产精国产精品| 国产脚交av在线一区二区| 在线看片第一页欧美| 91精品免费久久久久久久久| 91tv亚洲精品香蕉国产一区7ujn| 亚洲第一页自拍| 欧美精品生活片| 国产精品久久久久久久久久ktv| 亚洲第一网站男人都懂| 国产一区二区日韩| 成人女保姆的销魂服务| 国产精品男人的天堂| 欧美日韩中文在线| 精品国产欧美一区二区三区成人| 美女av一区二区三区| 国产日韩在线免费| 国产精品久久久久久久久久新婚| 九色成人免费视频| 懂色av中文一区二区三区天美| 热re91久久精品国99热蜜臀| 中文字幕视频一区二区在线有码| 日韩美女视频在线观看| 日韩天堂在线视频| 91免费国产视频| 亚洲国产日韩欧美在线动漫| 97色在线观看免费视频| 久久久噜噜噜久久久| 亚洲人成电影在线播放| 日韩在线视频播放| 91性高湖久久久久久久久_久久99| 欧美天堂在线观看| 中文字幕欧美日韩精品| 国产精品91在线观看| 亚洲欧美精品中文字幕在线| 色偷偷91综合久久噜噜| 久久国产精品久久国产精品| 成人性生交大片免费看视频直播| 久久最新资源网| 亚洲高清一区二| 久久视频免费在线播放| 日韩美女写真福利在线观看| 日本精品性网站在线观看| 久久久久www| 欧美精品少妇videofree| 国产综合在线看| 日韩极品精品视频免费观看| 欧美日韩国产影院| 在线观看日韩专区| 久久精品成人一区二区三区| 日韩精品一区二区视频| 亚洲午夜久久久影院| 大荫蒂欧美视频另类xxxx| 亚洲xxx自由成熟| 2018中文字幕一区二区三区| 欧美国产日韩在线| 久久久91精品国产一区不卡| 欧美老女人性生活| 精品国产欧美一区二区五十路| 久久躁日日躁aaaaxxxx| 亚洲va欧美va国产综合久久| 国产精品看片资源| 亚洲精品福利免费在线观看| 亚洲天堂免费观看| 日韩有码在线电影| 九九热r在线视频精品| 在线电影av不卡网址| 中文字幕视频一区二区在线有码| 成人观看高清在线观看免费| 亚洲一二三在线| 亚洲第一免费播放区| 亚洲人成在线电影| 91精品综合久久久久久五月天| 亚洲精品久久久久久下一站| 亚洲人成电影网站色www| 国产999精品久久久影片官网| 成人免费黄色网| 国产在线98福利播放视频| 少妇激情综合网| 久久久精品影院| 久久影视电视剧免费网站清宫辞电视| 欧美精品在线第一页| www.欧美三级电影.com| 色樱桃影院亚洲精品影院| 国产精品狠色婷| 色偷偷av一区二区三区乱| 色妞久久福利网| 亚洲少妇中文在线| 九九热精品视频| 精品国产91乱高清在线观看| 欧美成人一区二区三区电影| 久久久国产精彩视频美女艺术照福利| 精品视频在线播放色网色视频| 精品视频在线播放免| 久久在线观看视频| 茄子视频成人在线| 国产成人中文字幕| 成人国产精品免费视频| 美女999久久久精品视频| 俺也去精品视频在线观看| 亚洲天堂精品在线| 国产99久久精品一区二区永久免费| 国产日韩精品在线| 久久99久久99精品中文字幕| 国产精品视频一区二区三区四| 国产精品日韩在线播放| 亚洲国产天堂网精品网站| 亚洲一区二区少妇| 亚洲色在线视频| 成人网在线视频| 91av视频在线| 91久久在线观看| 有码中文亚洲精品| 欧美高清一级大片| 亚洲欧美中文字幕在线一区| 久久久精品日本| 欧美一级淫片aaaaaaa视频| 亚洲一区二区三区xxx视频| 麻豆国产精品va在线观看不卡| 日韩午夜在线视频| 在线播放国产一区二区三区| 亚洲石原莉奈一区二区在线观看| 国产一区二区三区四区福利| 91高清视频免费| 欧美性感美女h网站在线观看免费|