6 Stimmen

Browserübergreifende Normalisierung von Ereignisobjekten?

Ich bin auf der Suche nach einer guten Ressource für die Ereignisnormalisierung auf dem Ereignisobjekt. Ich versuche, es selbst zu tun, aber ich halte das Gefühl, ich werde etwas zu verpassen.

Hier ist, was ich bis jetzt habe, sagen Sie mir, wenn ich etwas übersehen habe.

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;
};

Hat jemand eine vollständige Normalisierungsfunktion gesehen? Habe ich etwas übersehen? (Unnötig zu erwähnen, dass wir das W3C-Modell anstreben, nicht den IE)

2voto

David Mulder Punkte 21

Es gibt ein weiteres Problem mit Ihrem Code:

e.layerX funktioniert nur bei positioniert Elemente, also müssen Sie zumindest ein "position:relative" zu Ihrem Element hinzufügen, um zu funktionieren. Zweitens e.offsetX funktioniert nur korrekt in IE8 und höher Daher sollten Sie wahrscheinlich davon absehen, sie so oder so zu benutzen (obwohl ich sie im Moment benutze, aber das muss nur in bestimmten Browsern funktionieren).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X