Не работает onClick во время активной прокрутки, в чем проблема?
Вешаю обработчик onClick, начинаю прокручивать элемент со строками, при попытке нажать на кнопку, останавливается прокрутка. Ожидалось выполнение ивента клика без остановки прокрутки. Скролэлемент со строками и кнопка находятся на разных уровнях вложенности и ветвях, никак друг друга перекрывать не должны
Дополнительно:
код добавь или удали вопрос, толку от вопроса если невозможно дать ответ так как вопросе не понятно, куда ты там вешаешь клик, что там передвигаешь
Ответы:
попробуй event.preventDefault()
- Пробовал, на capture тоже
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Проблема с onClick во время активной прокрутки может возникать из-за того, что браузер не успевает обрабатывать события клика во время скроллинга страницы. Это связано с тем, что при прокрутке браузер занят выполнением других задач и не может одновременно обрабатывать клики.
Для решения этой проблемы можно использовать специальные методы, которые позволяют отложить обработку события клика до завершения прокрутки. Например, можно использовать setTimeout для установки задержки перед выполнением кода onClick. Это позволит браузеру завершить прокрутку и освободить ресурсы для обработки события клика.
Пример кода на JavaScript:
let isScrolling = false; window.addEventListener('scroll', function() { isScrolling = true; setTimeout(function() { isScrolling = false; }, 100); }); function handleClick() { if (!isScrolling) { // Ваш код обработки клика console.log('Клик обработан'); } else { console.log('Прокрутка активна, обработка клика отложена'); } }
В данном примере мы устанавливаем флаг isScrolling в true при активной прокрутке, а затем с помощью setTimeout устанавливаем его обратно в false через 100 миллисекунд после прокрутки. В функции handleClick мы проверяем значение этого флага перед выполнением кода обработки клика.
Таким образом, использование такого подхода позволит избежать конфликтов между прокруткой и обработкой кликов на вашем сайте.