Просмотр полной версии : Событие - остановка скроллинга документа
Столкнулся с такой проблемой - как собственно отловить момент когда пользователь перестал прокручивать документ и оставил его в покое.
В интернете как раз много описано как делается наоборот.
p.s. а может я изначально не в том направлении начал думать. задача - есть последовательность блоков - который виден - ему ставится класс active и задача - подскролливать этот блок к верху экрана.
Подкиньте идею:blink:
trikadin
17.12.2011, 02:04
Поищите, здесь была такая тема. Найдёте там информацию.
P. S. И ещё, по-моему, я это на хабре встречал.
К сожалению не нашел. Если не трудно можете вспомнить как примерно тема называлась?
Nekromancer
18.12.2011, 02:43
В каком смысле перестал? Пока происходит событие scroll пользователь скролит. Событие не происходит, значит никто ничего не делает. Разве что когда текст выделяют и тянут вниз мышку, событие не вызывается. Но после события scroll обычно никто ничего не скролит :)
trikadin
18.12.2011, 02:54
В каком смысле перестал? Пока происходит событие scroll пользователь скролит. Событие не происходит, значит никто ничего не делает. Разве что когда текст выделяют и тянут вниз мышку, событие не вызывается. Но после события scroll обычно никто ничего не скролит
Да нет, имеется в виду окончание скролла. То есть что человек поскроллил, а потом отпустил.
Статью не нашёл, но суть решения была примерно такая: при начале скролла запоминаем время последнего скролла и ставим таймер (если его ещё нету). В таймере проверяем: если в течении небольшого времени ничего не обновилось - скролл кончился. Решение не очень, но другого нет.
Ога, onscroll clearTimeout setTimeout.
Иожно ещё флаг добавить на mousedown/mouseup.
Livanderiaamarum
19.12.2011, 15:16
Да нет, имеется в виду окончание скролла. То есть что человек поскроллил, а потом отпустил.
Статью не нашёл, но суть решения была примерно такая: при начале скролла запоминаем время последнего скролла и ставим таймер (если его ещё нету). В таймере проверяем: если в течении небольшого времени ничего не обновилось - скролл кончился. Решение не очень, но другого нет.
а как понять перестал скроллить? как он поскроллил значит он перстал скроллить. то есть вешай действие на событие скроллинг. В ЧЕМ ПРОБЛЕМА?
отвечаю еще раз ЧЕЛОВЕК ПЕРЕСТАЛ СКРОЛЛИТЬ ТОГДА КОГДА ОН ПРОСКРОЛЛИЛ, А СКРОЛЛЛИНГ ПРОИСХОДИТ МОМЕНТАЛЬНО, ТО ЕСТЬ МОМЕНТАЛЬНО ПОСЛЕ СОБЫТИЯ СКРОЛЛИНГА МОЖНО ОБРАБАТЫВАТЬ ЕГО ОТСУТСТВИЕ.
а если я понял что ты не правильно выразился то тебе нужно узнать вот что как получить событие когда человек НЕ СКРОЛЛИЛ ДОКУМЕНТ ЕЩЕ N ВРЕМЕНИ ПОСЛЕ СКРОЛЛИНГА?
Nekromancer
19.12.2011, 15:23
Поставьте уже фильтр в lowercase и отмену форматирования для пользователей с репутацией < 0.
Livanderiaamarum
19.12.2011, 15:41
Поставьте уже фильтр в lowercase и отмену форматирования для пользователей с репутацией < 0.
поставь себе скрипт корректор
Nekromancer
19.12.2011, 15:48
Проще тебя в игнор запихнуть :)
Livanderiaamarum
19.12.2011, 15:53
Проще тебя в игнор запихнуть :)
в чем проблема)?
Nekromancer
19.12.2011, 15:57
Livanderiaamarum,
Проблема в том, что это бредовая идея и таких как ты уж полон форум.
Livanderiaamarum
19.12.2011, 16:07
Livanderiaamarum,
Проблема в том, что это бредовая идея и таких как ты уж полон форум.
у тебя проблемы не только со мной)? Пиши скрипт тогда)
перестаньте флудить пожалуйста. Идею в том что отлавливать скроллинг, потом включать счетчик, отсчитывать какое-то время и если счетчик не сбился - тогда выполнять нужное действие? так я понял?
trikadin
20.12.2011, 23:44
Идею в том что отлавливать скроллинг, потом включать счетчик, отсчитывать какое-то время и если счетчик не сбился - тогда выполнять нужное действие? так я понял?
Да, так. Полсекунды подойдёт, наверное...
Сделал, работает. Правда в сижу ограниченных знаний всплилы многие косяки. Если кому не трудно можете показать свою реализацию. Мне непонятен момент с началом движения - как удалять таймер. Можно даже не код- а схему ) спасибо
trikadin
26.12.2011, 01:07
Псеводокод:
stopscroll=function() {
timer= false;
//дальше выполняете всё, что нужно
};
window.onscroll=function(){ // тут мог накосячить, не помню название события...
if (timer) {
cleatTimeout(timer);
};
timer=setTimeout(stopscroll, 100);
};
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot