Среда, 22.07.2026, 04:54
Приветствую Вас Гость

Меню сайта
Web-программирование
Категории раздела
Наш опрос
Какой браузер Вы используете?
Всего ответов: 1423
Статистика

Анализ веб сайтов
Главная » Статьи » Статьи o JavaScript

Ловим скролл
Страницы сайтов по своему функционалу стремятся к возможностям полноценных приложений, что, в основном, ложится на плечи JavaScript. Одна из задач, которая возникает у разработчика JavaScript-приложений — обработка скролла.


Пара примеров:

  • Карты Google масштабируются с помощью скролла, позволяя приближать/удалять нужный участок.
  • Страница просмотра фотографии недавно открытых Яндекс-фоток включает полоску превью (справа), которую можно крутить с помощью скролла.

Для эффективной работы со скроллом необходимо решить следующие задачи:

  • Поймать событие скролла.
  • Определить направление.
  • Заблокировать дефолтную обработку браузером — прокрутку страницы.

Для отлова скролла понадобится функция для добавления обработчика событий.

// Функция для добавления обработчика событий
function addHandler(objecteventhandleruseCapture) {
if (
object.addEventListener) {
object.addEventListener(eventhandleruseCapture useCapture false);
} else if (
object.attachEvent) {
object.attachEvent('on' eventhandler);
} 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.operadelta = -delta;
// В реализации Gecko получим свойство detail
} else if (event.detail) {
delta = -event.detail 3;
}
// Запрещаем обработку события браузером по умолчанию
if (event.preventDefaultevent.preventDefault();
event.returnValue false;
return 
delta;
}

При правильной работе будет выводиться алерт с направлением скролла без прокрутки страницы.
Категория: Статьи o JavaScript | Добавил: Rammstein (05.05.2010)
Просмотров: 1363 | Рейтинг: 0.0/0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Реклама
Поиск
Друзья сайта
Топ100- Веб-дизайн free counters