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

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

Шрифт:

<script src="getScrollOffsets. js"x/script> <!-- требуется функция drag-->

<script src= "Drag. js"x/script> <!-- определение drag -->

<!-- Буксируемый элемент -->

<div style="positionabsolute; left:100px; top:100px; width:250px;

background-color: white; border: solid black;">

<!-- "Заголовок" окна. Обратите внимание на атрибут onmousedown.
– ->

<div style= "background-color: gray: border-bottom: dotted black;

padding: 3px; font-family: sans-serif; font-weight: bold;"

onmousedown="drag(this.parentNode, event);">

Перетащи меня <!-- Содержимое заголовка -->

</div>

<!-- Содержимое буксируемого элемента -->

<р>Это тест. Проверка, проверка, проверка. </р>

<р>Тест</р>

<р>Тест</р>

</div>

Самым важным здесь является атрибут

onmousedown
во вложенном элементе
<div>.
Обратите внимание, что в нем используется свойство
this.parentNode
. Это говорит о том, что перемещаться будет весь контейнерный элемент.

17.6. События колесика мыши

Все современные броузеры поддерживают колесико мыши и возбуждают событие «mousewheel», когда пользователь вращает его. Броузеры часто используют колесико мыши для прокрутки документа или изменения масштаба отображения, но вы можете отменить событие «mousewheel», чтобы предотвратить выполнение этих действий по умолчанию.

Существует множество проблем совместимости, связанных с событиями «mousewheel», тем не менее вполне возможно написать программный код, действующий на всех платформах. На момент написания этих строк все броузеры, кроме Firefox, поддерживали событие с именем «mousewheel». В Firefox это событие называется «DOMMouseScroll». А в проекте спецификации «DOM Level 3 Events» предложено имя «wheel» вместо «mousewheel». Вдобавок к разным именам события различаются и имена свойств объектов, передаваемых с этими различными событиями, которые определяют величину поворота колесика. Наконец, следует отметить, что существуют также важные отличия в аппаратной реализации колесиков в разных мышах. Некоторые колесики могут вращаться только в одной плоскости, назад и вперед, а некоторые (особенно в мышах компании Apple) могут вращаться также влево и вправо (в действительности такие «колесики» являются трекболами (trackball)). Стандарт «DOM Level 3» даже включает поддержку «колесиков», которые могут вращаться в трех плоскостях - по или против часовой стрелки вдобавок к вращению вперед/назад и влево/вправо.

Объект события, передаваемый обработчику события «mousewheel», имеет свойство

wheelDelta
, определяющее величину прокрутки колесика. Один «щелчок» колесика в направлении от пользователя обычно соответствует значению 120, а один щелчок в направлении к пользователю - значению -120. В Safari и Chrome для поддержки мышей компании Apple, имеющих трекбол вместо колесика, вращающегося в одной плоскости, вдобавок к свойству
wheelDelta
объект события имеет свойства
wheelDeltaX
и
wheelDeltaY
, при этом значения свойств
wheelDelta
и
wheelDeltaY
всегда совпадают.

В Firefox вместо события «mousewheel» можно обрабатывать нестандартное событие «DOMMouseScroll» и использовать свойство

detail
объекта события вместо
wheelDelta
. Однако масштаб и знак изменения свойства
detail
отличается от
wheelDelta
: чтобы получить значение, эквивалентное значению свойства
wheelDelta
, свойство
detail
нужно умножить на -40.

На момент написания этих строк проект стандарта «DOM Level 3 Events» определял стандартное событие с именем «wheel» как стандартизованную версию событий «mousewheel» и «DOMMouseScroll». Согласно спецификации, объект, передаваемый обработчику события «wheel», должен иметь свойства

deltaX, deltaY
и
deltaZ
, определяющие величину прокрутки колесика в трех плоскостях. Значения этих свойств следует умножать на -120, чтобы получить значение и знак события «mousewheel».

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

Пример 17.3 демонстрирует, как обрабатывать события колесика мыши и как обходить проблемы совместимости. В нем определяется функция с именем

enclose,
которая обертывает в «кадр» или «видимую область» заданного размера более крупный элемент (такой как изображение) и определяет обработчик события колесика мыши, который позволяет пользователю прокручивать элемент в пределах видимой области и изменять размеры этой области. Эту функцию
enclose
можно использовать, как показано ниже:

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

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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