müssen in dem Handler (eigentlich innerhalb _und_ außerhalb) also Maßnahmen ergriffen werden, um das abzufangen. Der Handler muss also in seinem Kontext eine Information ablegen, ob er schon mal eine Ersetzung durchgeführt hat.
Das kann man machen, aber üblicher ist, dass der Handler sich einfach selbst entfernt. Die meisten Event-Handling-Bibliotheken bieten dafür Funktionen an.
Z.B. http://api.jquery.com/one/
Das von mir initial erwähnte <iframe onerror="…">
, also das Unterbringen von JavaScript-Event-Handlern im HTML, ist bekanntlich kein guter Stil. Wobei sich der Handler hier ebenfalls selbst entfernen könnte: this.onerror = null;
Global zugängliche »statische« Variablen, die Status zentral speichern, sind eigentlich in allen Programmiersprachen ein Anti-Pattern. In JavaScript kann man sowohl einfach Objekte mit Status erzeugen, als auch Status über Closures in Funktionen verfügbar machen, ohne dass der Status von außen zugänglich ist.
http://molily.de/js/organisation-module.html
http://molily.de/js/organisation-verfuegbarkeit.html#closures
Mathias