Don P: unbequeme Lösung

Beitrag lesen

Hallo,

es ist richtig, in den englischen Texten heißt es immer "fire" oder "fired". Wenn man bedenkt wie sich ein Feuer ausbreitet, was Du ja auch im Durchreichen erklärst, trifft es auch das Wesen der Sache gut. Können wir uns aber dennoch darauf einigen, dass ein Event weder gefeuert wird noch abbrennt, sondern schlichtweg ausgelöst wird bzw. stattfindet oder eintritt?

Hmm, da ich erst jetzt anfange mich näher dem Auslösen von Events zu beschäftigen, bin noch umerziehbar. Mal sehen...

Finde aber, dass das "feuern" die Sache wirklich sehr gut trifft. In der Biologie heißt es ja auch, dass ein Neuron "feuert", d.h. einen Impuls abgibt. In diesem Sinne passt das genau auf Events. Der Impuls breitet sich dann wie in einem Nervenstrang entlang des DOM aus.

Die Ausbreitung eines wirkliches Feuers ist da schon etwas anders geartet. In englischen Texten wird sogar *auf* ein "Ziel"element gefeuert im Sinne von "geschossen", was die Sache auch gut "trifft". Englische Muttersprachler haben mit dem militärischen Vokabular anscheinend weniger Schwierigkeiten als deutsche...

Registriere die Referenzen aller Elemente, die bei einem bestimmten Ereignis bearbeitet werden sollen in einem Objekt (var myevent={};), bzw. lösche sie aus dem Objekt, wenn sie nicht mehr betroffen sein sollen. Statt document.body.dispatchEvent() brauchst Du dann nur noch Funktionen, die myevent als Register heranziehen - fertig.

Das "nur noch" ist der Knackpunkt. Zur Zeit habe ich fertige Methoden wie

buttonsActive: function (bool) {  
  
  with(this) {  
  
    bla.disabled = blu.disabled = blubb.disabled =  
    ooo.disabled = iii.disabled = aaa.disabled =  
  
    /* und viele mehr... */  
  
    bing.disabled = bang.disabled = bong.diabled =  
  
    !bool;  
  }  
}

Das gefällt mir nicht wirklich. Wenn ich statt dessen für all diese DOM-Elemente Eventlistener registriere, die auf Events wie zustand1, zustandX, zustandY etc. hören, dann reicht das Auslösen entsprechender Events von irgendeinem Objekt aus – fertig.

Das Problem ist dabei nur das Zielelement, das man beim Auslösen mit angeben muss. document.body taugt dafür leider nicht, es muss schon ein Endknoten im DOM-Baum (ohne weitere Kindelemente) sein, damit sich der Impuls im Baum ausbreiten kann. Das kann aber u.U. in ein wildes Feuern auf viele Endknoten, ein sog. Amokballern werden ;-)

Mich reizt allein der Versuch, weil es anscheinenend ein ziemlich unüblicher Ansatz ist. Aber warum soll man nicht bereits vorhandene Infrastruktur wie das Verbreiten von Events nutzen, statt viele Zeilen JS Code zu erstellen und zu verwalten?

Gruß, Don P