Wie realisiere ich ein mouseenter/leave in allen Browsern

kkapsner

Super Moderator
Ein häufiges Problem ist, dass man gerne ein Event hätte, das nur feuert, wenn man mit der Mouse von außerhalb über ein Element geht und nicht wenn man innerhalb des Elementes über ein Kindelement fährt (oder aus dem Kind heraus). Gleiches Problem beim verlassen wieder (mouseleave).

Der IE hat diese Events schon nativ dabei (und wird deswegen hier gar nicht beachtet) und ich kann diesem hier nur zustimmen: http://www.quirksmode.org/dom/events/index.html#t017

Aber man kann sich das auch selbst zusammenbauen - mit Hilfe des relatedTarget-Attributs des Event-Objekts:
Code:
NODE_REFERENZ.onmouseover = function(ev){
	if (ev.target.contains(ev.relatedTarget)) alert("enter");
};
- bei leave äquivalent.

PS: kleines Problem beim FF: er kennt die Funktion contains nicht:
Code:
// FF has no NODE.contains
if (window.Element && Element.prototype && !Element.prototype.contains && Element.prototype.compareDocumentPosition){
	Element.prototype.contains = function contains(node){
		return ((this.compareDocumentPosition(node) & 16) == 16) || this.isSameNode(node);
	}
}
 
Zuletzt bearbeitet:
Zurück
Oben