Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Событие - остановка скроллинга документа (https://javascript.ru/forum/misc/24073-sobytie-ostanovka-skrollinga-dokumenta.html)

Kelly 17.12.2011 02:02

Событие - остановка скроллинга документа
 
Столкнулся с такой проблемой - как собственно отловить момент когда пользователь перестал прокручивать документ и оставил его в покое.
В интернете как раз много описано как делается наоборот.

p.s. а может я изначально не в том направлении начал думать. задача - есть последовательность блоков - который виден - ему ставится класс active и задача - подскролливать этот блок к верху экрана.
Подкиньте идею:blink:

trikadin 17.12.2011 02:04

Поищите, здесь была такая тема. Найдёте там информацию.

P. S. И ещё, по-моему, я это на хабре встречал.

Kelly 18.12.2011 01:19

К сожалению не нашел. Если не трудно можете вспомнить как примерно тема называлась?

Nekromancer 18.12.2011 02:43

В каком смысле перестал? Пока происходит событие scroll пользователь скролит. Событие не происходит, значит никто ничего не делает. Разве что когда текст выделяют и тянут вниз мышку, событие не вызывается. Но после события scroll обычно никто ничего не скролит :)

trikadin 18.12.2011 02:54

Цитата:

Сообщение от Nekromancer
В каком смысле перестал? Пока происходит событие scroll пользователь скролит. Событие не происходит, значит никто ничего не делает. Разве что когда текст выделяют и тянут вниз мышку, событие не вызывается. Но после события scroll обычно никто ничего не скролит

Да нет, имеется в виду окончание скролла. То есть что человек поскроллил, а потом отпустил.

Статью не нашёл, но суть решения была примерно такая: при начале скролла запоминаем время последнего скролла и ставим таймер (если его ещё нету). В таймере проверяем: если в течении небольшого времени ничего не обновилось - скролл кончился. Решение не очень, но другого нет.

Aetae 18.12.2011 03:55

Ога, onscroll clearTimeout setTimeout.
Иожно ещё флаг добавить на mousedown/mouseup.

Livanderiaamarum 19.12.2011 15:16

Цитата:

Сообщение от trikadin (Сообщение 144029)
Да нет, имеется в виду окончание скролла. То есть что человек поскроллил, а потом отпустил.

Статью не нашёл, но суть решения была примерно такая: при начале скролла запоминаем время последнего скролла и ставим таймер (если его ещё нету). В таймере проверяем: если в течении небольшого времени ничего не обновилось - скролл кончился. Решение не очень, но другого нет.

а как понять перестал скроллить? как он поскроллил значит он перстал скроллить. то есть вешай действие на событие скроллинг. В ЧЕМ ПРОБЛЕМА?

отвечаю еще раз ЧЕЛОВЕК ПЕРЕСТАЛ СКРОЛЛИТЬ ТОГДА КОГДА ОН ПРОСКРОЛЛИЛ, А СКРОЛЛЛИНГ ПРОИСХОДИТ МОМЕНТАЛЬНО, ТО ЕСТЬ МОМЕНТАЛЬНО ПОСЛЕ СОБЫТИЯ СКРОЛЛИНГА МОЖНО ОБРАБАТЫВАТЬ ЕГО ОТСУТСТВИЕ.


а если я понял что ты не правильно выразился то тебе нужно узнать вот что как получить событие когда человек НЕ СКРОЛЛИЛ ДОКУМЕНТ ЕЩЕ N ВРЕМЕНИ ПОСЛЕ СКРОЛЛИНГА?

Nekromancer 19.12.2011 15:23

Поставьте уже фильтр в lowercase и отмену форматирования для пользователей с репутацией < 0.

Livanderiaamarum 19.12.2011 15:41

Цитата:

Сообщение от Nekromancer (Сообщение 144470)
Поставьте уже фильтр в lowercase и отмену форматирования для пользователей с репутацией < 0.

поставь себе скрипт корректор

Nekromancer 19.12.2011 15:48

Проще тебя в игнор запихнуть :)

Livanderiaamarum 19.12.2011 15:53

Цитата:

Сообщение от Nekromancer (Сообщение 144477)
Проще тебя в игнор запихнуть :)

в чем проблема)?

Nekromancer 19.12.2011 15:57

Livanderiaamarum,
Проблема в том, что это бредовая идея и таких как ты уж полон форум.

Livanderiaamarum 19.12.2011 16:07

Цитата:

Сообщение от Nekromancer (Сообщение 144483)
Livanderiaamarum,
Проблема в том, что это бредовая идея и таких как ты уж полон форум.

у тебя проблемы не только со мной)? Пиши скрипт тогда)

Kelly 20.12.2011 22:39

перестаньте флудить пожалуйста. Идею в том что отлавливать скроллинг, потом включать счетчик, отсчитывать какое-то время и если счетчик не сбился - тогда выполнять нужное действие? так я понял?

Aetae 20.12.2011 22:46

:yes:

trikadin 20.12.2011 23:44

Цитата:

Сообщение от Kelly
Идею в том что отлавливать скроллинг, потом включать счетчик, отсчитывать какое-то время и если счетчик не сбился - тогда выполнять нужное действие? так я понял?

Да, так. Полсекунды подойдёт, наверное...

Kelly 26.12.2011 01:04

Сделал, работает. Правда в сижу ограниченных знаний всплилы многие косяки. Если кому не трудно можете показать свою реализацию. Мне непонятен момент с началом движения - как удалять таймер. Можно даже не код- а схему ) спасибо

trikadin 26.12.2011 01:07

Псеводокод:

stopscroll=function() {
 timer= false;
 //дальше выполняете всё, что нужно
};

window.onscroll=function(){ // тут мог накосячить, не помню название события...
 if (timer) {
  cleatTimeout(timer);
 };
 timer=setTimeout(stopscroll, 100);
};


Часовой пояс GMT +3, время: 17:22.