henk: ueberlagerung von mehreren events

Hallo *,

ich habe einen layer, in diesem ist ein drag&drop element,
wenn ich dieses drag&drop element aus diesem layer herrausziehe, soll
ein event ausgeloest werden.

nun tritt aber folgendes problem auf:
wenn ich das drag&drop element aus dem layer ziehe, schlaegt nicht sofort der onmouseout event zu, sondern erst wenn ich das element los lasse(es also nicht mehr im drag modues ist) und ich danach die maus bewege, dann erst schlaegt der onmouseout event zu.

hm mist dachte ich und habe ein bischen rumgespielt und rausgefunden, dass wenn ich das element im dragmodus in den layer hinein ziehe, nicht los lasse und gleich wieder raus ziehe, kommt sofort beim rausziehen der onmouseout event, so wie ich es haben moechte.

kann mir einer sagen, warum dies beim ersten fall nicht funktioniert und wie ich das beheben kann?

ich denke mir zumindest, dass der drag event den onmouseout event blockiert,
wenn ich aber erst im drag modus bin und das element in ein element was mit einem anderen event belegt ist bewege, wird auf das dragelement der neue event in der hierarchie ganz oben abgelegt.....

mein plan ist nun, den onmouseout event erst nach dem das element gedragt wurde auf den layer zu legen, damit dieser dann wieder als erstes abgearbeitet wird.

ich bekomm es aber nicht hin, den event nachtraeglich hinzuzufuegen kann mir einer sagen wie das geht?

das habe ich schon probiert, geht aber nicht
document.getElementById("layer").addEventListener("mouseout", test(), false);
document.getElementById("layer").onMouseOver = test();

thx
henk

  1. Wie das genau abläuft mit mousover in deinem fall weiß ich nicht, aber das hier ist falsch:

    das habe ich schon probiert, geht aber nicht
    document.getElementById("layer").addEventListener("mouseout", test(), false);
    document.getElementById("layer").onMouseOver = test();

    Sowohl der Eventlistener als auch die direkte Zuweisung benötigen eine Referenz auf eine Funktion. So wie du es machst, weist du den Events den Rückgabewert der Funktion zu, was keinen sinn macht. Du musst die Klammern weglassen.

    Struppi.

    1. danke, der funktionsaufruf funktioniert jetzt,

      dafuer habe ich jetzt noch ein anderes problem
      vielleicht kann mir da ja auch noch einer helfen:

      da ich ja quasi einen layer im layer habe(in dem dann auch noch mehrere elemente sind), habe ich nun das problem, das der onmousout event nicht nur ausgefuehrt wird, wenn ich aus dem aeusseren layer raus gehe sondern auch wenn ich in ein element rein gehe was in dem aeusseren layer drin ist.

      noch konfuser ist aber, das wenn ich in ein element rein gehe, dass in dem layer
      ist, wird ja wie gesagt auch der event ausgeloest, aber wenn ich da drin noch ein element habe und da dann rein gehe, wird auch noch mal der event ausgefuehrt,
      obwohl ich ja in dem inneren element gar kein event definiert habe.

      es ist so, als wuerden sich die events nach unten hin vererben und im endeffekt haben dann alle elemente die in meinem aeuseren layer drin sind dann alle den onmouseout event.

      kann man das irgendwie abschalten?

      thx
      henk