155 votes

Chrome: délais / intervalles suspendus dans les onglets d'arrière-plan?

J'ai été tester la précision d' setTimeout à l'aide de ce test. Maintenant, j'ai remarqué que (comme prévu) setTimeout n'est pas très précise, mais pour la plupart des appareils qui ne sont pas radicalement inexact. Maintenant, si je lance le test dans le Chrome et le laisser tourner dans un onglet en arrière-plan (et donc passer à un autre onglet et de naviguer là-bas), le retour à l'essai et à l'inspection te des résultats (si le test terminé), ils sont considérablement changé. On dirait les délais d'attente ont été en cours d'exécution beaucoup plus lent. Testé dans FF4 ou IE9 n'en est pas de se produire.

Donc, il semble que Chrome suspend ou au moins ralentit l'exécution de javascript dans un onglet qui n'a pas le focus. Ne pouvais pas trouver beaucoup sur le net sur le sujet. Cela voudrait dire que nous ne pouvons pas exécuter des tâches de fond, comme par exemple vérifier périodiquement sur un serveur utilisant le XHR appels et setInterval (j'ai l'impression de voir le même comportement pour setInterval, écrire un test, si le temps est avec moi).

Quelqu'un a rencontré ce? Y'aurait-il une solution pour ce cas de suspension ou de ralentir? Peut-on appeler ça un bug et que je devrais fichier comme ça?

104voto

pimvdb Points 66332

J'ai récemment demandé à ce sujet et c'est un comportement par conception. Lorsqu'un onglet est inactif, la fonction est appelée au maximum une fois par seconde.

Peut-être que cela aide: Comment puis-je faire en sorte que setInterval fonctionne également lorsqu'un onglet est inactif dans Chrome?

Changement de code: http://codereview.chromium.org/6577021

0voto

Carey Estes Points 554

J'ai mis à jour mon noyau jQuery à la version 1.9.1, ce qui a permis de résoudre l'écart entre intervalles dans les onglets inactifs. Je voudrais essayer cela en premier, puis examiner d'autres options de substitution de code.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X