安卓webview下使用zepto的swipe遇到的坑
众所周知,安卓手机上touch事件一直有各种各样莫名其妙的问题。
$(‘body‘).bind("touchmove", function(e) { e.preventDefault(); });
$(id).bind("touchmove", function(e) { e.stopPropagation() });
var startX, startY; var endX, endY; var distanceX, distanceY; $(‘body‘).bind(‘touchstart‘, function(event) { startX = event.targetTouches[0].clientX; startY = event.targetTouches[0].clientY; }).bind(‘touchend‘, function(event) { endX = event.changedTouches[0].clientX; endY = event.changedTouches[0].clientY; distanceX = Math.abs(startX - endX); distanceY = Math.abs(startY - endY); if (distanceX > distanceY) { startX - endX > 0 ? swipeLeft() : swipeRight(); } });
var count = 0; //判断用户是否第一次进行touchmove操作 var startX, startY; var endX, endY; var distanceX, distanceY; $(‘body‘).bind(‘touchstart‘, function(event) { count = 0; //每次开始点击时清零 startX = event.targetTouches[0].clientX; startY = event.targetTouches[0].clientY; }).bind(‘touchmove‘, function(event) { if (count === 0) { //如果是第一次滑动 endX = event.changedTouches[0].clientX; endY = event.changedTouches[0].clientY; distanceX = Math.abs(startX - endX); distanceY = Math.abs(startY - endY); if (distanceX > distanceY) { //如果X绝对距离大于Y绝对距离 event.preventDefault(); } } count++; }).bind(‘touchend‘, function(event) { endX = event.changedTouches[0].clientX; endY = event.changedTouches[0].clientY; distanceX = Math.abs(startX - endX); distanceY = Math.abs(startY - endY); if (distanceX > distanceY) { startX - endX > 0 ? swipeLeft() : swipeRight(); } });
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。