2015-11-21 3 views
1

Я пробовал прокручивать одну страницу в любом событии прокрутки, но при запуске нескольких событий прокрутки мы используем колесо мыши в my example.Javascript: Как мы можем комбинировать события?

Я хочу, чтобы прокручивать один экран в то время, когда мышь или клавиатура используется для прокрутки, но это событие, как показано ниже срабатывают несколько раз для мыши колеса прокрутки

window.onscroll = function (e) { 
    e.preventDefault();} 
+1

дребезга - см https://remysharp.com/2010/07/21/throttling-function-calls, например. У Lodash/underscore есть предопределенная функция для этого. – Sulthan

+0

@sam не уверен, что вы имеете в виду, отлично работает для меня. каждая прокрутка переходит к следующему заголовку. он перескакивает несколько заголовков для вас? – Banana

+1

@Banana вы делаете очень точную прокрутку - точно для того, чтобы генерировать событие один раз. Если вы попробуете прокручиваться, как настоящий пользователь, вы увидите, что скрипт попадает прямо в начало страницы. – shershen

ответ

1

Вы можете использовать setTimeout для обнаружения конца события прокрутки, а затем запустите свой код, как показано ниже.

var t; 
addEventListener('scroll', scrollEndFunc) 
function scrollEndFunc(e) { 
    clearTimeout(t); 
    t = setTimeout(function(){ 
      //todo stuff 
     }, 600) // wait untill 600ms, if no scroll then 
       // execute actual function else cancel it. 
} 

Вот Edit в codepen

+0

Пробовал это в моем коде. Невозможно прокрутить страницу за вторым экраном :( – Samdeesh

+0

вы можете попробовать плз выше codepen один раз, отредактировал ответ – vinayakj

Смежные вопросы