@Giraffe96

Как отключить свайп при масштабировании?

На сайте есть слайдер, который можно пролистывать при помощи свайпов влево\вправо. Проблема в том, что фото пролистываются при масштабировании двумя пальцами. Как понимаю, нужно сделать проверку количества пальцев, касающихся сенсора, и запретить свайп если их более одного. Пробовал ставить для исполнения функции свайпа условие (event.touches.length == 1), но это так не работает. Как можно подобное реализовать?

<script>
window.addEventListener('load', function(){
        let flag = 1;  
    var touchsurface1 = document.getElementById('touchsurface1'),
        startX,
        startY,
        dist,
        threshold = 50, // минимальное расстояние для swipe
        allowedTime = 9900, // максимальное время прохождения установленного расстояния
        elapsedTime,
        startTime  
    function handleswipe(isrightswipe){
        if (isrightswipe){
            slider2_15.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() // время контакта с поверхностью сенсора
        //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)
        //e.preventDefault()
    }, false)  
}, false)
</script>
  • Вопрос задан
  • 349 просмотров
Пригласить эксперта
Ответы на вопрос 1
kocherman
@kocherman
расскоментируйте
e.preventDefault() у события 'touchstart'.
Также выполните e.preventDefault() с событиями 'touchmove' и 'gesturechange'
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
29 нояб. 2024, в 07:44
20000 руб./за проект
29 нояб. 2024, в 04:45
5000 руб./за проект
29 нояб. 2024, в 04:42
5000 руб./за проект