Определите, что вызвало событие прокрутки для запуска - PullRequest
6 голосов
/ 09 августа 2011

Известно, что событие scroll может быть запущено с помощью колесика мыши, нажатия на стрелки полосы прокрутки или динамически с помощью функции window.scrollTo(left, top).

Можно ли определить, что вызвало событие scroll? Было ли это вмешательство пользователя или код JS?

1 Ответ

5 голосов
/ 12 августа 2011

Не думаю, что вы можете определить причину прокрутки. Событие прокрутки указывает только на то, что окно прокручивается, а не , почему прокручивает.

Но, возможно, вы приостанавливаете прослушиватель события прокрутки или устанавливаете флаг перед вызовом window.scrollTo() из своего кода. Здесь, в Safari, если вы используете scrollTo(), событие прокрутки срабатывает только один раз, независимо от того, сколько вы прокручиваете, так что вы могли бы сделать что-то вроде этого:

// somewhere in your code...
isCodedScrollEvent = true;
window.scrollTo(0, 200);

// elsewhere in your code...
function scrollListener(event) {
    if( isCodedScrollEvent ) {
         // event was caused by code, so handle it differently
         // and then flip the flag back to false, so the next
         // will be handled normally again
         isCodedScrollEvent = false;
    } else {
         // event was caused by user
    }
}

Это не красиво, но должно работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...