Объединение слушателя в стек для аннулирования предыдущего слушателя сложно, поскольку они запускаются в последовательности FIFO.
Некоторые параметры:
1. Удаление слушателя
Вы можете удалить блокирующий слушатель по истечении этого периода времени.
С именованной функцией:
const prevent = (e) => e.preventDefault();
document.body.addEventListener('wheel', prevent, { passive: false });
Вы можете удалить его позже:
setTimeout(function () {
document.querySelector('body').classList.remove('fixed');
document.body.removeEventListener('wheel', prevent);
}, 1000);
2. Использование флага
Использование флага состояния для обработки preventDefault
.
const state = { prevent: true };
const prevent = (e) => {
if (state.prevent) {
e.preventDefault();
}
};
document.body.addEventListener("wheel", prevent, { passive: false });
Затем измените флаг:
setTimeout(function () {
document.querySelector("body").classList.remove("fixed");
state.prevent = false;
}, 1000);