@Margo1964

Как убрать долбежку по whell addEventListener и заставить срабатывать один раз?

document.addEventListener('wheel', function(e) {
	if (e.deltaX < 0) { // left
		$(".prev").click();
	} else if (e.deltaX > 0) { // right
		$(".next").click();
	}
});

Есть такой прекрасный кусок кода.
Суть в том, что когда листаешь колесом мыши вправо или влево (есть девайсы с таким колесом), то срабатывает клик по ссылке на следующий/предыдущий документ.
Проблема в том, что когда держишь колесо в определенной позиции, например, скролл вправо, то addEventListener долбит поссылке и пролистывание докуметов становится молниеносным (Ajax).
Можно ли как-то улучшить код, чтобы срабатывал только один раз (одно нажатие - один клик) при горизонтальном скролле или добавить таймаут. Но обычный таймаут не подходит, происходит то-же самое, только с задержкой.
  • Вопрос задан
  • 184 просмотра
Решения вопроса 2
SagePtr
@SagePtr
Еда - это святое
Самый простой вариант - запоминать время последнего срабатывания события. И проверять далее, если оно меньше какого-то порога (200 милисекунд, например) - то рассматривать это нажатие как предыдущее и не пропускать его.
Ответ написан
Комментировать
@Margo1964 Автор вопроса
Нашла возможность "попридержать коней":
var lastExecution;
document.addEventListener('wheel', function(e) {
	var now = Date.now();
	if (now - lastExecution < 1000) return;
	lastExecution = now;
	if (e.deltaX < 0) { // left
		$(".prev").click();
	} else if (e.deltaX > 0) { // right
		$(".next").click();
	}
}, false);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы