Existe-t-il un moyen fiable pour plusieurs navigateurs de détecter qu'un onglet a le focus?
Le scénario est que nous avons une application qui interroge régulièrement les cours des actions, et si la page n'a pas de focus, nous pourrions arrêter le sondage et éviter à tout le monde le bruit du trafic, d'autant plus que les gens sont fans d'ouvrir plusieurs onglets avec différents portefeuilles.
Est window.onblur
et window.onfocus
une option pour cela?
javascript
optimization
polling
Fenton
la source
la source
Réponses:
Oui,
window.onfocus
etwindow.onblur
devrait fonctionner pour votre scénario:http://www.thefutureoftheweb.com/blog/detect-browser-window-focus
la source
onfocus
est crossbrowser, où les événements que vous avez mentionnés sont uniquement IE, je ne vois pas pourquoi cela serait considéré comme une bonne note de votre part ..Modification importante: cette réponse est obsolète. Depuis son écriture, l'API Visibility ( mdn , exemple , spec ) a été introduite. C'est la meilleure façon de résoudre ce problème.
AFAIK,
focus
etblur
sont tous pris en charge sur ... tout. (voir http://www.quirksmode.org/dom/events/index.html )la source
Lors de la recherche sur ce problème, j'ai trouvé une recommandation selon laquelle l' API de visibilité de page devrait être utilisée. La plupart des navigateurs modernes prennent en charge cette API selon Can I Use: http://caniuse.com/#feat=pagevisibility .
Voici un exemple de travail (dérivé de cet extrait de code ):
Mise à jour: L'exemple ci-dessus avait l'habitude d'avoir des propriétés préfixées pour les navigateurs Gecko et WebKit, mais j'ai supprimé cette implémentation car ces navigateurs proposent depuis un certain temps une API de visibilité de page sans préfixe. J'ai gardé le préfixe spécifique de Microsoft afin de rester compatible avec IE10.
la source
Surprenant de ne voir personne mentionné
document.hasFocus
MDN a plus d'informations.
la source
Oui, cela devrait fonctionner pour vous. Vous venez de me rappeler ce lien que j'ai rencontré qui exploite ces techniques. lecture intéressante
la source
Je le ferais de cette façon (Référence http://www.w3.org/TR/page-visibility/ ):
la source
Amusant et facile à utiliser!
Le plugin suivant passera par votre test standard pour différentes versions d'IE, Chrome, Firefox, Safari, etc. et établira vos méthodes déclarées en conséquence. Il traite également de problèmes tels que:
L'utilisation est aussi simple que: Faites défiler jusqu'à « Exécuter l'extrait de code »
la source
jQuery(window).blur/focus
, qui n'était pas souhaitée par beaucoup, donc l'une des raisons pour lesquelles j'ai créé ce plugin. Le plugin est destiné à aider à fournir ce que jQuery ne fait pas déjà