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

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

Шрифт:

* Drag.js: буксировка абсолютно позиционированных HTML-элементов.

*

* Этот модуль определяет единственную функцию drag, которая должна вызываться

* из обработчика события onmousedown. Последующие события mousemove будут вызывать

* перемещение указанного элемента. Событие mouseup будет завершать буксировку.

* Эта реализация действует в обеих моделях событий, стандартной и IE.

* Использует функцию getScrollOffsets, представленную выше в книге.

*

* Аргументы:

*

* elementToDrag: элемент, принявший событие mousedown или содержащий его элемент.

* Этот элемент должен иметь абсолютное позиционирование. Значения его свойств style.left

* и style.top будут изменяться при перемещении указателя мыши пользователем.

*

* event: объект Event, полученный обработчиком события mousedown.

**/

function drag(elementToDrag, event) {

// Преобразовать начальные координаты указателя мыши в координаты документа

var scroll = getScrollOffsets: // Вспомогательная функция, объявленная

// где-то в другом месте

var startX = event.clientX + scroll.x;

var startY = event.clientY + scroll.y;

// Первоначальные координаты (относительно начала документа) элемента, который

// будет перемещаться. Так как elementToDrag имеет абсолютное позиционирование,

// предполагается, что его свойство offsetParent ссылается на тело документа,

var origX = elementToDrag.offsetLeft;

var origY = elementToDrag.offsetTop;

// Найти расстояние между точкой события mousedown и верхним левым углом элемента.

// Это расстояние будет учитываться при перемещении указателя мыши,

var deltaX = startX - origX;

var deltaY = startY - origY;

// Зарегистрировать обработчики событий mousemove и mouseup,

// которые последуют за событием mousedown,

if (document.addEventListener) { // Стандартная модель событий

// Зарегистрировать перехватывающие обработчики в документе

document.addEventListener( "mousemove", moveHandler, true);

document.addEventListener("mouseup”, upHandler, true);

}

else

if (document.attachEvent) { // Модель событий IE для IE5-8

// В модели событий IE перехват событий осуществляется вызовом

// метода setCapture элемента.

elementToDrag.setCaptuге;

elementToDrag.attachEvent("onmousemove”, moveHandleг);

elementToDrag.attachEvent("onmouseup", upHandler);

// Интерпретировать потерю пер’ехвата событий мыши как событие

mouseup elementToDrag.attachEvent("onlosecapture", upHandler);

}

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

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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