我有一个小网络画廊,我为移动浏览器添加了滑动导航。我通过非常简单的 touchstart/touchmove/touchend 事件跟踪来做到这一点。
问题是,当我尝试在浏览器窗口中捏缩放时,如果任何手指从我添加了触摸事件处理程序的元素中开始,它就会失败,我从对 preventDefault 的调用中猜测。
有没有一种方法可以在不阻止浏览器放大和缩小功能的情况下跟踪用于导航图像的触摸事件?如果它在我的元素上方,我不介意阻止单指滚动,但我想允许捏缩放。
这是代码:
function addDragHandlers(eventDivId) {
var startX, endX;
var slides = $('#'+eventDivId);
slides.bind('touchstart', function(e) {
e.preventDefault();
startX = e.pageX;
endX = startX;
});
slides.bind('touchmove', function(e) {
e.preventDefault();
endX = e.pageX;
});
slides.bind('touchend', function(e) {
e.preventDefault();
if ( endX - startX < 0) {
// go to next image
} else if ( endX - startX > 0) {
// go to previous image
} else {
// do click action
}
}
});
}