Ich habe einen Timer, der jede Sekunde zählt. Es funktioniert gut, bis der Benutzer 3 oder 4 Tabs von meiner Website öffnet, an dem der Timer des neuesten Tabs doppelt oder dreifach geht. Ich kann den Fehler derzeit nur in IE8 reproduzieren. Ich habe zuvor setInterval verwendet und könnte den Fehler auch in Firefox reproduzieren.Warum beschleunigt sich mein setTimeout, wenn mehrere Tabs für meine Site geöffnet sind?
Ich benutze tatsächlich FBJS (Facebook's Javascript), also gebe ich nur einen Pseudocode.
function countDown() {
...
setTimeout(function() { countDown() }, 1000);
}
countDown();
aber was ich wirklich suchen ist mehr theoretischer Natur. Ich weiß, dass Browser versuchen können, mit setInterval "aufzuholen", aber wie können mehrere Registerkarten dieses Verhalten für setTimeout verursachen?
Wow, gab die Funktionen randomisierten Namen den Trick! Wie ist es möglich, dass sich Javascript in verschiedenen Fenstern gegenseitig beeinflussen kann? – lamplighter
Bizarr, oder? Ich denke, es muss etwas sein, wie ich sagte, "Code" irgendwo im Inneren des Browsers "glätten", die Funktionen nur nach Namen (naja, wahrscheinlich nach Site + Name) identifiziert und nicht zwischen verschiedenen Tabs/Fenstern unterscheidet. Könnte irgendwo einen Fehlerbericht wert sein. – chaos
Dies kann eine alternative Lösung ohne PHP sein: http://stackoverflow.com/questions/6112671/settimeout-speeds-up-with-multiple-tabs/6112864#6112864 – namuol