Matthias Froese
Grünschnabel
Hallo! Ich bin in Zusammenhang mit der setTimeout-Methode auf ein Mysterium gestoßen, das ich mir nicht erklären kann. Gegeben ist folgende HTML-Seite
und folgendes Script:
Der Knackpunkt sind die beiden setTimeout()-Aufrufe, die nach 5 Sekunden den Fenstertitel ändern sollen und 10 Sekunden das geöffnete Fenster wieder schließen.
Das Fensterschließen funktioniert tadellos wie gewünscht nach 10 Sekunden.
Aber: Der Fenstertitel "Nach 5 Sekunden erscheinender Fenstertitel!" erscheint unerwarteterweise nicht erst nach 5 Sekunden, sondern sofort.
Ich würde ja noch verstehen, wenn es mit dem neuen Titel gar nicht funktionieren würde.
Kann mir jemand freundlicherweise einen Tipp geben, warum hier nicht 5 Sekunden mit dem Aufruf der Neubetitelung gewartet wird? Ich habe ja alles schon in eine Funktion um das Problem mit der Variablenglobalität zu umgehen.
Na ja, bezüglich Javascript bin ich Neuling (ich habe da deutlich mehr Erfahrung in Java).
Vielen Dank im Voraus für etwaige Hilfe!
HTML:
<!DOCTYPE html>
<HTML>
<HEAD>
<META CHARSET="UTF-8">
<META NAME="viewport" CONTENT="width=device-width, initial-scale=1.0">
<TITLE>Javascript-Mysterium</TITLE>
<STYLE TYPE="text/css">
<!--
body {
color: #FFFFFF;
background-color: #200020;
font-family: "Lucida";
}
-->
</STYLE>
</HEAD>
<BODY>
<H1>Javascript-Mysterium</H1>
<P> Ein neues Fenster öffnet sich für 10 Sekunden. Das neue Fenster soll nach 5 Sekunden umbenannti werden. </P>
<P> Aber leider erhält es SOFORT den Namen, der eigentlich nach 5 Sekunden erscheinen sollte. </P>
<SCRIPT SRC="js/mystery.js"></SCRIPT>
<A HREF="#" ONCLICK="fenstermystery();"> Bitte hier klicken. </A>
</BODY>
</HTML>
und folgendes Script:
Javascript:
var neufenster;
var fenstitel;
var fensterzu;
function neutitel(t) {
neufenster.document.title=t;
}
function fenstermystery() {
neufenster=window.open("","neufenster");
neufenster.document.writeln("<HTML><HEAD><TITLE>Fenstertitel in HTML-Tags</TITLE></HEAD><BODY></BODY></HTML>");
neutitel("Neu gesetzter Fenstertitel...");
fenstitel=neufenster.setTimeout(neutitel('Nach 5 Sekunden erscheinender Fenstertitel!'),5000);
fensterzu=neufenster.setTimeout("window.close()",10000);
}
document.writeln("<P> - Zur Demonstration bitte den Link unten anklicken. - </P>");
Der Knackpunkt sind die beiden setTimeout()-Aufrufe, die nach 5 Sekunden den Fenstertitel ändern sollen und 10 Sekunden das geöffnete Fenster wieder schließen.
Das Fensterschließen funktioniert tadellos wie gewünscht nach 10 Sekunden.
Aber: Der Fenstertitel "Nach 5 Sekunden erscheinender Fenstertitel!" erscheint unerwarteterweise nicht erst nach 5 Sekunden, sondern sofort.
Ich würde ja noch verstehen, wenn es mit dem neuen Titel gar nicht funktionieren würde.
Kann mir jemand freundlicherweise einen Tipp geben, warum hier nicht 5 Sekunden mit dem Aufruf der Neubetitelung gewartet wird? Ich habe ja alles schon in eine Funktion um das Problem mit der Variablenglobalität zu umgehen.
Na ja, bezüglich Javascript bin ich Neuling (ich habe da deutlich mehr Erfahrung in Java).
Vielen Dank im Voraus für etwaige Hilfe!