Antwort an „Rolf B“ verfassen

Hallo Felix,

und diese Funktion könnte noch nicht verfügbar sein, weil sie erst im nächsten <script>-Element definiert wird

Ja, da war noch was. Ich hatte mich heute mittag mit dem Thema befasst, und mich blödsinnigerweise gewundert, warum

window.onload = "foo()";

nicht funktioniert. Ohne Worte - wie Matthias so gern sagt 😉

Darüber hab ich das Scope-Thema dann vergessen.

Du hast natürlich recht, wenn die Funktion in einem Script-Block definiert wird, der hinter dem Script-Block liegt, in dem onload zugewiesen wird, dann gibt's die Funktion noch nicht.

Innerhalb eines Scriptblocks findet die übliche Hebung von function und var Deklarationen statt, d.h.

window.onload = foo;

function foo() {
   alert("Foohoo!");
}

funktioniert. Aber weil der Browser die Scriptblöcke so ausführt, wie sie kommen, klappt es in zwei Scriptblöcken nur dann, wenn die Definition der Funktion gelaufen ist, bevor onload zugewiesen wird.

Rolf

--
sumpsi - posui - obstruxi
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen