Всем привет, собственно сабж. Нужно определить сколько раз и в каком направлении был прокручен скролл (не позиция скролла на странице, а именно сколько раз был прокручен).
Есть классический скрипт:
// Функция для добавления обработчика событий
function addHandler(object, event, handler, useCapture) {
if (object.addEventListener) {
object.addEventListener(event, handler, useCapture ? useCapture : false);
} else if (object.attachEvent) {
object.attachEvent('on' + event, handler);
} else alert("Add handler is not supported");
}
// Добавляем обработчики
/* Gecko */
addHandler(window, 'DOMMouseScroll', wheel);
/* Opera */
addHandler(window, 'mousewheel', wheel);
/* IE */
addHandler(document, 'mousewheel', wheel);
// Обработчик события
function wheel(event) {
var delta; // Направление скролла
// -1 - скролл вниз
// 1 - скролл вверх
event = event || window.event;
// Opera и IE работают со свойством wheelDelta
if (event.wheelDelta) {
delta = event.wheelDelta / 120;
// В Опере значение wheelDelta такое же, но с противоположным знаком
if (window.opera) delta = -delta;
// В реализации Gecko получим свойство detail
} else if (event.detail) {
delta = -event.detail / 3;
}
// Запрещаем обработку события браузером по умолчанию
if (event.preventDefault) event.preventDefault();
event.returnValue = false;
alert(delta);
return delta;
}
Но, тут при каждом движении скролла переменные стираются и переписываются заново. Т.е. можно определить положение, но сколько раз не выходит. Тут идет delta = -1 если вниз и +1 если вверх. Как бы сделать так, чтобы сначала было -1, затем, -2, -3 и т.д. ну или +1, +2, 3 и т.д.
Может быть я конечно и не в том направлении иду. Вообще нужно, чтобы при скроллинге 1 элемент (на всю высоту экрана) заменялся другим и т.д., а сам скролл на сайте был бы отключен.
Спасибо.