Tim Tepaße: Durch JS erzeugte Event-Handler nicht wirksam?

Beitrag lesen

Hallo,

Ich recherchier mal.

OK, damit eventuelle Archivsucher nicht nur einen fragenden Beitrag finden, sondern auch was hilfreiches, dokumentiere ich mal:

Ich, vollkommen im DOM-Wahn und an Events seit jeher uninteressiert gewesen habe meine Event-Handler im Prinzip so erstellt ...

attr = document.createAttribute("onMouseover");  
attr.nodeValue = "tueDiesUndDas()";  
node.setAttributeNode(attr);

... also in der extrem stilisierten und, schlimmer, extrem umständlichen Syntax der DOM-Methoden. Und damit definierte Event-Handler werden von den hier getesteten Browsern nur im Safari aktiv. Aber es gibt ja nicht nur eine Variante für Events, genauer scheint es da einen ganzen Zoo zu geben. Zum Beispiel:

Daniel schlug mir dieses Variante vor:

node.onmouseover = "tueDiesUndDas()"

(Sinnigerweise finde ich dafür nirgens einen Standard. Ist das noch aus Netscape-JS-Zeiten?)

Dann gibt es noch DOM Level 2 Events mit einem weiteren komplizierten Modell, das aber im wesentlich auf dieses hinausläuft:

node.addEventListener("mouseover", tueDiesUndDas, true)

Siehe auch SELFHTML: DHTML, DOM-Modelle, Event-Handling beim DOM

Beides sollte dann wohl aktive Event-Handler im HTML-Dokument hervorbingen, wenn es nicht gerade irgendwo Bugs gibt. Es gibt einige Threads dazu im Archiv:
http://forum.de.selfhtml.org/archiv/2005/3/t104621/
http://forum.de.selfhtml.org/archiv/2004/6/t82376/
http://forum.de.selfhtml.org/archiv/2004/10/t91627/

Punkt für Safari, nehme ich mal an. ;)

Finde ich immer noch, es gibt keinen Grund, Event-Handler nicht funktionstüchtig zu erstellen, auch wenn sie nur als DOM-Attribute definiert sind.

Tim