Google Chrome: Stromsparende HTML5-Animationen

Zur Steuerung von HTML5-Animationen können die Funktionen setTimeout(öffnet im neuen Fenster) und setInterval(öffnet im neuen Fenster) genutzt werden. Allerdings berücksichtigen die beiden Funktionen nicht, ob ein Element oder zumindest das Tab, in dem es angezeigt wird, überhaupt sichtbar ist. So kommt es, dass Webapplikationen auch im Hintergrund ungebremst weiterlaufen und Ressourcen verbrauchen. Das ist vor allem auf Notebooks und mobilen Geräten unangenehm, da das System nicht nur träger wird, sondern auch der Akku schneller leer ist.
Der exzessive Gebrauch dieser Timerfunktionen ist laut Google kein theoretisches Problem. So seien Webseiten zu finden, die lediglich statischen Text darstellten, aber dennoch die Timer mehrere hundert Mal in der Sekunde auslösten.
Mozilla hat Firefox 4 mit dem API mozRequestAnimationFrame(öffnet im neuen Fenster) ausgestattet. Dabei bestimmt der Browser, mit welcher Framerate eine Animation dargestellt wird und achtet darauf, dass diese nicht zu hoch ist. Google folgt der Idee mit dem API webkitRequestAnimationFrame(öffnet im neuen Fenster) , das mit Chrome 10 eingeführt wurde und mittlerweile ins Webkit-Projekt integriert ist. Googles Ansatz entspricht dem von Mozilla, ergänzt die Schnittstelle aber um ein zweites Argument: das Element, das über ein Callback animiert werden soll. So soll der Browser verhindern, dass Elemente animiert werden, die nicht zu sehen sind. Für Tabs im Hintergrund wird der Timer überhaupt nicht aufgerufen, was den Stromverbrauch deutlich senken soll, vor allem, wenn mehrere Tabs animierte Inhalte enthalten.
Chrome 11 soll noch einen Schritt weiter gehen und setTimeout und setInterval bei Tabs im Hintergrund maximal einmal pro Sekunde aufrufen. Umgesetzt ist dies bereits in den aktuellen Entwicklerversionen. Zwar bestehe das Risiko, dass bestehende Webapplikationen angepasst werden müssten, so Google, das aber sei die Verbesserung der User Experience wert.