Кросс-браузер Нормализация объекта события? - PullRequest
6 голосов
/ 10 января 2011

Я ищу хороший ресурс по нормализации события на объекте события. Я пытаюсь сделать это сам, но продолжаю чувствовать, что что-то упущу.

Вот что у меня есть, скажите мне, если я что-то пропустил.

var eFix = function(e) {
    e = e || window.event;
    e.target = e.target || e.srcElement;
    e.offsetX = e.offsetX || e.layerX;
    e.offsetY = e.offsetY || e.layerY;
    e.relatedTarget = e.relatedTarget ||
        e.type == 'mouseover' ? e.fromElement : e.toElement;
    e.target = e.target || e.srcElement;
    if (target.nodeType === 3) target = target.parentNode; //Safari bug
    return e;
};

Кто-нибудь видел полную функцию нормализации? Я что-то пропустил? (Излишне говорить, что мы собираемся для модели W3C, а не IE)

1 Ответ

2 голосов
/ 20 февраля 2012

Есть еще одна проблема с вашим кодом:

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

...