Ich habe setInterval
30 Mal pro Sekunde einen Code ausgeführt. Dies funktioniert jedoch hervorragend. Wenn ich jedoch eine andere Registerkarte auswähle (sodass die Registerkarte mit meinem Code inaktiv wird), setInterval
wird die Registerkarte aus irgendeinem Grund in den Ruhezustand versetzt.
Ich habe diesen vereinfachten Testfall erstellt ( http://jsfiddle.net/7f6DX/3/ ):
var $div = $('div');
var a = 0;
setInterval(function() {
a++;
$div.css("left", a)
}, 1000 / 30);
Wenn Sie diesen Code ausführen und dann zu einer anderen Registerkarte wechseln, einige Sekunden warten und zurückgehen, wird die Animation an dem Punkt fortgesetzt, an dem Sie zur anderen Registerkarte gewechselt haben. Die Animation wird also nicht 30 Mal pro Sekunde ausgeführt, falls die Registerkarte inaktiv ist. Dies kann bestätigt werden, indem gezählt wird, wie oft die setInterval
Funktion pro Sekunde aufgerufen wird. Dies ist nicht 30, sondern nur 1 oder 2, wenn die Registerkarte inaktiv ist.
Ich denke, dass dies beabsichtigt ist, um die Leistung zu verbessern, aber gibt es eine Möglichkeit, dieses Verhalten zu deaktivieren? In meinem Szenario ist das eigentlich ein Nachteil.
Date
. Wenn die Intervalle (aus diesem oder anderen Gründen) nicht schnell ausgelöst werden, wird die Animation nur ruckeliger und nicht langsamer.
Date
Objekt gehackt, um wirklich zu sehen, welche Zeit vergangen ist.