Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:
empty-line/>

// Необходимо решить некоторые проблемы совместимости броузеров

var isMacWebkit = (navigator.userAgent.index0f("Macintosh") !== -1 &&

navigator.userAgent.index0f("WebKit") !== -1);

var isFirefox = (navigator.userAgent.index0f("Gecko") !== -1);

// Зарегистрировать обработчики событий mousewheel.

frame.onwheel = wheelHandler; // Для будущих броузеров

frame.onmousewheel = wheelHandler; // Для большинства текущих броузеров

if (isFirefox) // Только Firefox

frame.addEventListener("DOMMouseScroll", wheelHandler, false);

function wheelHandler(event) {

var e = event || window.event; // Объект события, стандартный или IE

// Получить величину прокрутки из объекта события, проверив свойства объекта

// события wheel, mousewheel (в обоих, 2-мерном и 1-мерном вариантах)

// и DOMMouseScroll в Firefox.Масштабировать значение так, чтобы один «щелчок»

// колесика соответствовал 30 пикселам. Если какой-либо из броузеров в будущем

// будет возбуждать оба типа событий, "wheel" и "mousewheel", одно и то же

// событие будет обрабатываться дважды. Но будем надеяться, что отмена

// события wheel будет предотвращать возбуждение события mousewheel.

var deltaX = e.deltaX*-30 || // событие wheel

e.wheelDeltaX/4 || //mousewheel

0; // свойство не определено

var deltaY = e.deltaY*-30 || // событие wheel

e.wheelDeltaY/4 || // событие mousewheel в Webkit

(e.wheelDeltaY===undefined && // Если нет 2-мерного свойства,

e.wheelDelta/4) || // использовать 1-мерное свойство

e.detail*-10 || // событие DOMMouseScroll в Firefox

0; // свойство не определено

// Большинство броузеров генерируют одно событие со значением 120

// на один щелчок колесика. Однако похоже, что мыши компании Apple

// более чувствительные, и значения свойств delta часто оказываются

// в несколько раз больше 120, по крайней мере, для Apple Mouse.

// Использовать прием проверки типа броузера, чтобы решить эту проблему,

if (isMacWebkit) {

deltaX /= ЗО;

deltaY /= 30;

}

// Если мы когда-нибудь будем получать событие mousewheel или wheel в (будущих

// версиях) Firefox, можно отказаться от обработки события DOMMouseScroll.

if (isFirefox && e.type !== '‘DOMMouseScroll")

frame.removeEventListener("DOMMouseScroll", wheelHandler, false);

// Получить текущие размеры элемента содержимого

var contentbox = content.getBoundingClientRectO;

var contentwidth = contentbox.right - contentbox.left;

var contentheight = contentbox.bottom - contentbox.top;

<
  • Читать дальше
  • 1
  • ...
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: