ingobar: Wann wird onmouseout erzeugt?

Hallo,

ich habe ein <div onmouseout="alert('hallo')"> mit Text und einer Tabelle drin. Solange der Cursor überm Text ist passiert auch korrekterweise nichts. Wenn ich aber dann auf die Tabelle komme, erscheint das Alert, obwohl ich doch eigentlich nicht das <div> verlassen habe.

Ist das Verhalten des Browsers FF2.0 unter OSX so korrekt? Ist es mein Fehler?

  1. Hi,

    Solange der Cursor überm Text ist passiert auch korrekterweise nichts. Wenn ich aber dann auf die Tabelle komme, erscheint das Alert, obwohl ich doch eigentlich nicht das <div> verlassen habe.

    Du musst immer überprüfen, ob das feuernde Element innerhalb von div steckt. Beim IE gibts el.contains(inner_el), für gecko musst Du was bauen, z.B. diese vor kurzem gepostete Funktion:

    // gecko helper, find out if containee is within container
        //
        function containsDOM (container, containee) {

    var isParent = false;
            do {
                if ((isParent = container == containee)) break;
                containee = containee.parentNode;
            } while (containee != null);

    return isParent;
        }

    // event registrieren...
    mayDiv.onmouseout =  function(e){tu_was(e || window.event)}

    so steht Dir der Event und alle nötigen Eigenschaften desselben dann auch zur Verfügung (ie: toElement, ff: relatedTarget). Btw: Du solltest unbedingt noch ein bisschen nach eventhandling googeln.

    Gruesse, Joachim

    --
    Am Ende wird alles gut.