ГЛАВНАЯПОМОЩЬСВЯЗЬКАРТА САЙТА
Нельзя знать всё
Нужно знать, где искать
Читать в Яндекс.Ленте
Add to Google Reader or Homepage

Добавить в:
################
Подписка на рассылку новых статей IT-Guru.info

Через сервис Subscribe.Ru:
 

Через сервис FeedBurner:
 

Рассылка выходит автоматически раз в сутки
с мая 2008 года


Rambler's Top100
Главная ::  Web-программирование  ::  Java Script Печать

Ловим скролл

Автор: Автор
Релиз: 3 июля 2009 года
Рейтинг: 1.0
Просмотров: 131

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

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

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

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

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

Для отлова скролла понадобится функция для добавления обработчика событий.
Код
// Функция для добавления обработчика событий
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;
return delta;
}


При правильной работе будет выводиться алерт с направлением скролла без прокрутки страницы.
Источник: Internet Technologies

Оцените эту статью. Ваш голос позволяет нам отбирать дейтсвительно нужные статьи!

Рейтинг: 1.0/5


Комментарии

Добавить комментарий

Имя:
Email:   ICQ: 
Комментарий:
Подтверждение:  Введите символы, показанные на картинке

      
      Обновить картинку


Copyright by © IT Guru team, 2004-2010
Rambler's Top100 Рейтинг@Mail.ru 
При цитировании документа ссылка на сайт с указанием автора обязательна. Полное заимствование документа является нарушением украинского, российского и международного законодательства и возможно только с согласия IT Guru team
Статьи, добавленные