Hello,
ja, aber Javascript arbeitet ja nicht wirklich nebenläufig. Das Laden des neuen Inhalts (genauer gesagt, das Anfordern) beginnt ja erst, wenn der bis dato arbeitende onerror-Handler endet und der Browser bzw. die Javascript-Engine "Zeit hat", sich um die neu zugeteilten Aufgaben zu kümmern.
Gut, damit ist Reentranz-Problem also vom Tisch. Aber was ist mit dem zirkulären Verlauf? Wodurch wird der hier ausgeschlossen?wird er nicht. Wenn der error-Handler durch das Neu-Besetzen von location.href eine neue Ressource anfordert, die ihrerseits auch wieder nicht geladen werden kann, entsteht eine endlose Abfolge von onerror-Aufrufen. Aber nicht rekursiv, sondern streng sequentiell.
Ich sprach ja auch nicht von rekursiv, sondern von zirkulär. :-)
So ein kontrollierter Abbruch fehlt wohl im hier vorliegenden Fall.
Wenn Du auch der Meinung bist, dass das Szenario zu einem solchen Fehler führen könnte, 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. Oder gibt es bei JavaScript auch Static-Variablen?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
