Laura: Capturing für IE simulieren - wie?

Beitrag lesen

Hallo!

Ich bin gerade dabei, eine addEvent-Funktion zu schreiben, die Browser-Unabhängigkeit
gewährleisten soll - mit folgenden features:

1. alle Browser werden unterstützt (insbesondere IE und alte Browser, die weder
   addEventListener noch attachEvent kennen);
2. optional kann ein Array mit Parametern für den Handler übergeben werden;
3. mehrere Elemente können durch einen einzigen Funktionsaufruf zum listener werden;
4. event.stopPropagation, event.preventDefault und event.target funktionieren
   in den Handlern - in allen Browsern;
5. den capture-Modus auf true zu setzen klappt nicht nur in modernen Browsern.

1-4 habe ich bereits abgehandelt - 5 ist das große Problem.
Meine Idee war, wenn für capturing ein true übergeben
wird, bei den Browsern, die addEventListener nicht kennen, zunächst über eine
Hilfsfunktion einen Array zu erstellen, der die Reihenfolge festlegt, in der
die ganzen Handler vom target zum document feuern und diese dann manuell aufzurufen.
Nun gibt's da aber leider 2 große Hürden:

1. Die Reihenfolge hängt ja nicht nur vom capturing-Modus des target-Elements ab;
   das hieße wohl (wenn ich das capturing/bubbling-Konzept richtig verstanden habe,
   dass ich für jedes Element/Handler-Paar auch den cap-Modus irgendwo speichern muss.
   Das wäre nicht allzu schlimm, weil ich für die Browserkompatibilität sowieso
hash tables anlegen muss (z.B. elem.events[type][handler-id] = handler);
2. Dann kommt da aber noch die Möglichkeit hinzu, dass in einer (oder mehreren) der
   Handler-Funktionen ein event.stopPropagation(); notiert ist. Diese Information
   müsste also entweder als Parameter addEvent übergeben oder auf ganz
   umständliche sonstige Weise erhalten werden.

Hat sich hier jemand schon einmal die Mühe gemacht, für IE den capturing-Modus
zu simulieren oder weiß kennt einfach so einen Trick, den er aus seinem Ärmel hier
ins Forum schütteln kann?

Vielen lieben Dank,
Laura