Temporisation minimum setInterval () / setTimeout () sur les onglets d'arrière-plan

Duplication possible:
Chrome: timeouts / interval suspendu dans les onglets d'arrière-plan?

Existe-t-il un délai minimum autorisé pour setInterval() et setTimeout() lors de l'exécution sur un onglet que vous ne regardez pas actuellement?

Ce code exécute setInterval() avec un délai spécifié de setInterval() et écrit sur la durée du délai effectivement. Il indique également lorsque vous entrez / quittez l'onglet.

 <html> <body> <script type="text/javascript"> window.onfocus = function () { document.body.innerHTML += 'entered tab<br />'; }; window.onblur = function () { document.body.innerHTML += 'left tab<br />'; }; var previous = new Date().getTime(); setInterval(function () { var now = new Date().getTime(); var elapsed = now - previous; document.body.innerHTML += elapsed + '<br />'; previous = now; }, 100); </script> </body> </html> 

Voici un extrait de la sortie sur Chrome 12.0.742.100 sur Ubuntu 10.04.2 LTS:

 101 101 101 left tab 1001 1000 1004 1003 1002 1000 entered tab 101 101 101 102 101 

J'ai également essayé différentes valeurs pour le retard. Toute valeur inférieure à 1000 résultats entraîne le même comportement que celui de 1000 lorsque vous regardez un onglet différent. Les valeurs supérieures à 1000 se comportent correctement. Et la même chose se produit avec la version setTimeout() de ce code.

Je sais que votre exemple a été pour Chrome, mais pour Firefox au moins, à partir des Notes de version de Firefox 5 (sous "Ce qui est nouveau dans Firefox").

Les onglets d'arrière-plan ont définiTimeout et setInterval serré à 1000 ms pour améliorer les performances


Oh, et je me suis rendu compte que cela a déjà été demandé à propos de Chrome, ici: Chrome: timeouts / interval suspendu dans les onglets d'arrière-plan? . Il existe un lien qui montre que cela est également vrai dans Chrome.