Заблокировать свайп на слайдере при масштабировании 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>

Ответы (0 шт):