evtWrapper – обертка для объекта event
Как известно объект event
у Internet Explorer является свойством window, а у остальных браузеров он передается как первый аргумент в функцию/метод обрабатывающий событие. При подписке на события при помощи JS-wrapper ваш метод, подписанный на событие, получит в качестве первого аргумента специальный объект обертку объекта event
. Этот объект будет всегда передаваться первым аргументом, независимо от используемого браузера и будет содержать ссылку на объект event
и ряд дополнительных свойств и методов описанных ниже.
Для подписки на события всех объектов рекомендуется использовать метод addListener у обертки этих элементов. У обертки объектов window
и document
также есть аналогичный метод addListener для подписки на любые события этих объектов, но кроме того, есть еще два специальных метода: setOnloadListener и setOnUnloadListener.
Кроме всех вышеперечисленных методов есть еще функция, использование которой не рекомендуется: eventProcessor(html-element, event, object, method, parameters).
{strip}Свойство | Описание |
---|---|
evt | ссылка на объект event. |
elmWr | ссылка на wrapper элемента, на котором произошло событие. |
Свойство | Описание |
---|---|
eventStatus | запрещено/разрешено действие, связанное с событием (только для чтения). |
bubbleStatus | запрещено/разрешено просачивание (только для чтения). |
absX | координата X события, относительно документа. |
absY | координата Y события, относительно документа. |
relX | координата X события, относительно объекта вызвавшего событие. |
relY | координата X события, относительно объекта вызвавшего событие. |
keyCode | код служебной клавиши (При событии onkeypress). |
charCode | код символа (При событии onkeypress). |
bv | объект browserVersion. |
Метод | Описание |
---|---|
eventDrop | запретить действие, выполняемое после завершения JavaScript. |
stopBubbling | запретить просачивание. |
Свойство evt
Синтаксис: объект.evt;
Значением свойства evt является ссылка на объект event
. Независимо от используемого браузера обратиться к объекту event
можно через данное свойство. Но при прямом обращении к этому объекту следует учитывать, что некоторые свойства этого объекта существенно различаются в разных браузерах.
Свойство elmWr
Синтаксис: объект.elmWr;
Значением свойства elmWr является ссылка на wrapper объекта, на котором произошло событие.
Свойство eventStatus
Синтаксис: объект.eventStatus;
При помощи свойства eventStatus можно проверить будет ли выполняться запрет основного действия по завершению JavaScript. В исходном состоянии значение этого свойства true
, а после выполнения метода eventDrop его значение меняется на false
.
Свойство bubbleStatus
Синтаксис: объект.bubbleStatus;
При помощи свойства bubbleStatus можно проверить будет ли выполняться запрет "просачивания". В исходном состоянии значение этого свойства true
, а после выполнения метода stopBubbling его значение меняется на false
.
Свойство absX
Синтаксис: объект.absX;
Значением свойства absX является координата X события, относительно документа. Как правило, большинство событий связано с мышью, поэтому в таких случаях данное свойство будет содержать координату курсора мыши.
Свойство absY
Синтаксис: объект.absY;
Значением свойства absY является координата Y события, относительно документа. Как правило, большинство событий связано с мышью, поэтому в таких случаях данное свойство будет содержать координату курсора мыши.
Свойство relX
Синтаксис: объект.relX;
Значением свойства relX является координата X события, относительно объекта, на котором произошло событие. Как правило, большинство событий связано с мышью, поэтому в таких случаях данное свойство будет содержать координату курсора мыши.
Свойство relY
Синтаксис: объект.relY;
Значением свойства relY является координата Y события, относительно объекта, на котором произошло событие. Как правило, большинство событий связано с мышью, поэтому в таких случаях данное свойство будет содержать координату курсора мыши.
Свойство keyCode
Синтаксис: объект.keyCode;
Значением свойства keyCode является код нажатой служебной клавиши для события "onkeypress" или для других подобных событий, связанных с нажатием клавиш. В FireFox возможно получение кодов всех возможных клавиш, а в IE этот список ограничен. Позже здесь будет выложена таблица кодов.
Свойство charCode
Синтаксис: объект.charCode;
Значением свойства charCode является код нажатой обычной алфавитно-цифровой клавиши для события "onkeypress" или для других подобных событий, связанных с нажатием клавиш. Позже здесь будет выложена таблица кодов.
Свойство bv
Синтаксис: объект.bv
Значение свойства bv является объектом browserVersion.
Метод eventDrop
Синтаксис: объект.eventDrop(doNothing); Аргументы: value — булево значение
Метод eventDrop служит для запрета действие выполняемых после завершения JavaScript. Например, если событием является Submit формы или клик по ссылке, то после выполнения данного метода submit или переход по ссылке выполняться не будет.
Метод stopBubbling
Синтаксис: объект.stopBubbling(doNothing); Аргументы: value — булево значение
Метод stopBubbling служит для запрета просачивания. Событие может передаваться от самого "глубокого" объекта к его предку - Bubbling либо в обратном направлении - Capturing. Эти понятия настолько обширны, что я, пожалуй, не смогу описать их подробно в рамках данной инструкции. Вы можете прочитать о них, например, здесь. В двух словах скажу только, что самый популярный на сегодняшний день браузер Internet Explorer поддерживает пока только Bubbling, поэтому для обеспечения кроссбраузерности в рамках js-wrapper я рассматриваю только этот порядок передачи событий. Теперь возвращаясь к рассматриваемому нами методу, могу сказать, что stopBubbling запрещает передачу события родительскому объекту.
Другими словами, например, у вас подписаны на событие onclick
, элемент body
и какой-нибудь div
в него входящий. Вам надо чтобы при клике на div
это событие не передавалось дальше на body
, то при вызове обработчика события элемента div
вам надо в нем выполнить evtWr.stopBubbling();
, где evtWr - обертка нашего объекта event.