2016-08-19 5 views
0

Существует простой кодChrome запускает событие прокрутки

window.onload = function() { 
    window.addEventListener('scroll', function() { 
     alert('asd'); 
    }); 
}; 

при обновлении страницы прокручиваются, в светлячок - вы не увидите предупреждение, но в хроме ИНОГДА, он срабатывает сигнал тревоги, иногда его нет. На той же странице, такой же свиток, всего несколько обновлений.

Вопрос: как избежать запуска события прокрутки при загрузке в хром после обновления?

Проблема в том, что DOMContentLoaded может решить эту проблему, но у меня есть анимация блока с координатами на прокрутке (прокрутка-затем-исправлена), а с DOMContentLoaded координаты ошибочны.

p.s. Нет $ @ # $ jQuery.

п.с.2.

if ('scrollRestoration' in history) { 
     history.scrollRestoration = 'manual'; 
    } 

- не исправление, но обходной способ тоже.

ответ

1

Вы можете отслеживать первоначальный свиток с флагом и обнаружить ли эта страница фактически не пролистайте:

window.onload = function() { 
    var isFirstTime = true; 
    window.addEventListener('scroll', function() { 
     if (isFirstTime) { 
      isFirstTime = false; 
      if (window.scrollY === 0) return; 
     } 
     alert('asd'); 
    }); 
}; 
1

Попробуйте ниже код

<script> 
window.onscroll = function() { 
console.log('Scrolling'); 

}; 

</script> 
1

использовать это:

var tFn = function(){ 
    alert(); 
} 
document.onreadystatechange = function(){ 
    if (document.readyState == ("complete")) { 
     setTimeout(function(){ 
      window.onscroll = tFn; 
     },100); 
    } 
} 
Смежные вопросы