MarcusS
Grünschnabel
Hallo,
ich habe folgenden Code-Block am Ende meiner HTML-Datei, die innerhalb eines IFrame[1] liegt:
in einem externen Javascript, welches im übergeordneten Frame eingebunden ist, findet sich die Funktion serverZeitF wie folgt definiert:
Nun ergibt sich unter Firefox 3 folgendes Fehlerbild, was ich bisher weder unter Firefox 2, noch unter IE 7 nachvollziehen konnte:
Beim Laden der Seite erhalte ich die Fehlermeldung:
---> top.serverZeitF is not a function
---> top.serverzeit = setInterval( "top.serverZeitF()", 1000 );
Der Verweis auf die Fehlerstelle zeigt auf die setInterval-Zeile der Funktion startServer. Nun stelle ich mir folgende Fragen, die ich bisher nicht beantworten kann:
a) Warum triggert der FF3 hier den Fehler, die zuvor per typeof geprüfte Funktion sei keine Funktion?
b) Und warum macht er das nur manchmal, aber nicht jedesmal?
c) Warum wird vor der Fehlerzeile die Funktion offenbar aufgerufen, zumindest triggert die Zeile mit Funktionsaufruf inkl. Parameter keinen Fehler (aber auch keine Ausgabe auf der Konsole)
d) Warum wird beim Aufruf der Seite nicht bereits vor dem Fehler die Ausgabe 'engine started' erzeugt?
e) Warum startet der Timer kurze Zeit später regulär und zeigt beide console-Ausgaben an?
Keine der beteiligten Funktionen wird an anderer Stelle überschrieben, oder an anderer Stelle aufgerufen. Gleiches gilt für die beteiligten globalen Variablen.
[1] Ich hab das nicht verbrochen, muss leider mit dem Code arbeiten...
Ich stehe hier grade irgendwie auf dem Schlauch, ich verstehe nicht warum der Fehler manchmal getriggert wird, manchmal nicht. Und vor allem warum mir das nur im FF3 passiert, nicht aber in anderen Browsern.
Kann mich jemand auf die richtige Spur zurückbringen?
Danke
Marcus
ich habe folgenden Code-Block am Ende meiner HTML-Datei, die innerhalb eines IFrame[1] liegt:
Code:
function startServer() {
if ("function" === typeof(top.serverZeitF)) {
if (console.debug) console.debug('engine started');
top.serverZeitF( 1220596642 );
top.serverzeit = setInterval( "top.serverZeitF()", 1000 );
}
else {
setTimeout("startServer()", 1000);
}
}
if ("function" === typeof(top.serverZeitF)) {
startServer();
}
else {
setTimeout("startServer()", 1000);
}
in einem externen Javascript, welches im übergeordneten Frame eingebunden ist, findet sich die Funktion serverZeitF wie folgt definiert:
Code:
function serverZeitF( zeit ) {
if (console.debug) console.debug("timer active");
if( zeit ) server_zeit = zeit;
else server_zeit++;
}
Nun ergibt sich unter Firefox 3 folgendes Fehlerbild, was ich bisher weder unter Firefox 2, noch unter IE 7 nachvollziehen konnte:
Beim Laden der Seite erhalte ich die Fehlermeldung:
---> top.serverZeitF is not a function
---> top.serverzeit = setInterval( "top.serverZeitF()", 1000 );
Der Verweis auf die Fehlerstelle zeigt auf die setInterval-Zeile der Funktion startServer. Nun stelle ich mir folgende Fragen, die ich bisher nicht beantworten kann:
a) Warum triggert der FF3 hier den Fehler, die zuvor per typeof geprüfte Funktion sei keine Funktion?
b) Und warum macht er das nur manchmal, aber nicht jedesmal?
c) Warum wird vor der Fehlerzeile die Funktion offenbar aufgerufen, zumindest triggert die Zeile mit Funktionsaufruf inkl. Parameter keinen Fehler (aber auch keine Ausgabe auf der Konsole)
d) Warum wird beim Aufruf der Seite nicht bereits vor dem Fehler die Ausgabe 'engine started' erzeugt?
e) Warum startet der Timer kurze Zeit später regulär und zeigt beide console-Ausgaben an?
Keine der beteiligten Funktionen wird an anderer Stelle überschrieben, oder an anderer Stelle aufgerufen. Gleiches gilt für die beteiligten globalen Variablen.
[1] Ich hab das nicht verbrochen, muss leider mit dem Code arbeiten...
Ich stehe hier grade irgendwie auf dem Schlauch, ich verstehe nicht warum der Fehler manchmal getriggert wird, manchmal nicht. Und vor allem warum mir das nur im FF3 passiert, nicht aber in anderen Browsern.
Kann mich jemand auf die richtige Spur zurückbringen?
Danke
Marcus