Don P: unbequeme Lösung

Beitrag lesen

Hallo,

Habe mal meine Logik bemüht und bin jetzt zu dem Schluss gekommen, dass das, was mir da vorschwebt, schlicht unmöglich ist.

Ein Event wird natürlich immer von einem bestimmten DOM-Element gefeuert, und solange es *betroffene* Kind-Elemente gibt, wird der Event auch nach unten weitergereicht ("capturing phase"), und steigt ggf. anschließend wieder nach oben zu den Eltern-Elementen in der "bubbling phase".

Wenn also ein Event z.B. von document.body gefeuert wird, dann gibt es gar keine *betroffenen* Kindelemente, und auch nur wenige Eltern-Elemente. Das wäre z.B. der Fall für einen Klick irgendo im Dokument außerhalb von jedweden anderen Elementen (div, table, button oder was immer). Solche Elemente bekommen vom Klick natürlich nichts mit, und können daher auch nicht reagieren.

Die einzige Möglichkeit, unbekannte Elemente durch einen gefeuerten Event zu erreichen ist die, dass man den Event auf die äußersten "Blätter" jedes "Astes" im DOM-Baums feuert, so dass der Event im Baum aufsteigen und von den lauschenden Elementen verarbeitet werden kann.

Wenn man das obige Beispiel so umschreibt, dass nicht der 2.Button, sondern das umgebende div-Element den Event verarbeitet, dann funktioniert es nämlich auch.

Man muss also notgrdrungen immer alle äußeren "Blätter" im DOM-Baum ermitteln und auf jedes feuern um sicherzustellen, dass der Event auch wirklich zu allen lauschenden DOM-Elementen gelangt. Das ist zwar nicht sonderlich bequem :-(, aber anders geht es wohl nicht...

Gruß, Don P