Как вызвать единожды функцию при многократном срабатывании событии «scroll»?

Всем Добрый вечер.
Есть функция вызывающаяся при событии scroll , внутри этой функции есть другая функция которая срабатывает при определенных условиях. Как сделать так чтоб она сработала только один раз и умерла.

document.addEventListener("DOMContentLoaded", ready);

function ready() {
var getDocument = window;
addHandler(getDocument, "scroll", animateBloks);
}

function addHandler(el, ev, func) {
try{
el.addEventListener(ev, func, false);
}catch(x){
el.attachEvent("on" + ev, func);
}
}

function animateBloks() {
var wHeight = window.innerHeight;
var block = document.getElementsByClassName("steps")[0];
var gPos = block.getBoundingClientRect();
// блок находится ниже области видимости экрана, поэтому проверяю
if( wHeight > gPos.bottom ) {
// здесь будет функция которая должна сработать только один раз

может есть другой способ проверки когда блок целиком окажется видимым в низу экрана при скролле?
  • Вопрос задан
  • 318 просмотров
Пригласить эксперта
Ответы на вопрос 2
miraage
@miraage
Старый прогер
Почитайте про debounce/throttle.
Ответ написан
Комментировать
@Yurajun Автор вопроса
Я тут подумал, и решил что при вызове функции animateBloks() в первый раз присвою какой нибудь класс блоку "block". А в функцие animateBloks() буду дополнительно проверять наличии этого класса, если есть то дальше через if не пройдет вызов повтор этой функции.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы