Заблокировать свайп на слайдере при масштабировании JS
Написал на javascript слайдер с возможностью листать слайды свайпом. Проблема в том, что при изменении масштаба щепоткой срабатывает свайп и слайд переключается. Пробовал ставить на функцию свайпа различные условия, но тогда свайп совсем не работает. Как можно заблокировать свайп при масштабировании?
<script>
window.addEventListener('load', function(){
var scaling = false;
var scale_factor = 1.0;
var curr_scale = 1.0;
var max_zoom = 8.0;
var min_zoom = 0.5
let flag = 1;
var touchsurface1 = document.getElementById('touchsurface1'),
startX,
startY,
dist,
threshold = 50, // минимальное расстояние для swipe
allowedTime = 9900, // максимальное время прохождения установленного расстояния
elapsedTime,
startTime
/*функция, которая определяет расстояние меж пальцами*/
function distance (p1, p2) {
return (Math.sqrt(Math.pow((p1.clientX - p2.clientX), 2) + Math.pow((p1.clientY - p2.clientY), 2)));
}
/*функция свайпа*/
function handleswipe(isrightswipe){
if (isrightswipe){
slider2_12.checked = true;
}
if (dist < -50){
slider2_2.checked = true;
}
if (dist > -50 && dist < 50) {
if (flag) {
$('.full').css('display', 'block');
flag = 0;
}
else {
$('.full').css('display', 'none');
flag = 1;
}
}
}
touchsurface1.addEventListener('touchstart', function(e){
var touchobj = e.changedTouches[0]
dist = 0
startX = touchobj.pageX
startY = touchobj.pageY
startTime = new Date().getTime() // время контакта с поверхностью сенсора
evt.preventDefault();
var tt = evt.targetTouches;
if (tt.length >= 2) {
dist = distance(tt[0], tt[1]);
scaling = true;
} else {
scaling = false;
}
}, false)
touchsurface1.addEventListener('touchmove', function(e){
evt.preventDefault();
var tt = evt.targetTouches;
if (scaling) {
curr_scale = distance(tt[0], tt[1]) / dist * scale_factor;
touchsurface1.style.WebkitTransform = 'scale(' + curr_scale + ', ' + curr_scale + ')';
}
}, false)
touchsurface1.addEventListener('gesturechange', function(e){
e.preventDefault()
}, false)
touchsurface1.addEventListener('touchend', function(e){
var touchobj = e.changedTouches[0]
dist = touchobj.pageX - startX // получаем пройденную дистанцию
elapsedTime = new Date().getTime() - startTime // узнаем пройденное время
// проверяем затраченное время,горизонтальное перемещение >= threshold, и вертикальное перемещение <= 300
var swiperightBol = (elapsedTime <= allowedTime && dist >= threshold && Math.abs(touchobj.pageY - startY) <= 300)
handleswipe(swiperightBol);
var tt = evt.targetTouches;
if (tt.length < 2) {
scaling = false;
if (curr_scale < min_zoom) {
scale_factor = min_zoom;
} else {
if (curr_scale > max_zoom) {
scale_factor = max_zoom;
} else {
scale_factor = curr_scale;
}
}
touchsurface1.style.WebkitTransform = 'scale(' + scale_factor + ', ' + scale_factor + ')';
} else {
scaling = true;
}
}, false)
}, false)
</script>