J'ai une minuterie JavaScript qui fait des demandes XMLHTTP de manière constante (une fois toutes les 10 secondes). J'adorerais pouvoir mettre en pause la minuterie lorsque la fenêtre ou l'onglet perd la mise au point.
Je suis pleinement conscient du Code simple ci-dessous distille la fonctionnalité que je recherche: p> est-ce que quelqu'un existe une technique pour déterminer lorsqu'une fenêtre de navigateur ou l'onglet perd / gains axée qui fonctionne dans tous les navigateurs populaires? p> p> Onfocus code> et
OnBlur code> Events sur le < Code> Fenêtre code> objet, mais ils ne tirent pas de manière fiable sur tous les navigateurs. Par exemple, dans Safari, onglets Ne déclenchez pas les événements A>. P>
5 Réponses :
Mes anciennes tentatives désespérées de trouver une telle chose m'ont amené à conclure qu'il n'y a pas d'animal de ce type. P>
Oh, comment j'aimerais avoir tort. P>
Il existe une autre question de dépassement de pile concernant ce sujet. Ils n'ont pas abordé la question de la navigation à onglets là-bas. Ils donnent un lien qui passe dans certains détails, bien que sans utiliser jQuery. P>
est Il existe un moyen de détecter si une fenêtre de navigateur n'est pas active actuellement? P>
Je ne pense pas que les événements de FOCUS / BLUR fonctionnent avec une navigation à onglets dans Safari. Certaines personnes ont suggéré des événements de souris, comme Mouseleave / Mouseener pour cela. P>
J'ai des problèmes d'interface utilisateur comme celle-ci moi-même, alors si je découvre tout ce que je vais suivre ici. P>
Une chose à considérer est que FOCUS CODE> /
BLUR CODE> Événements étant bloqués par les fournisseurs de navigateurs est peut-être un moyen de protéger les utilisateurs. Certains navigateurs autorisent
alerte () code> -Style popups (et même, je crois, un
focus () code> méthode) pour que l'onglet reprenne la mise au point. Blocage de la mise au point code> /
Blur CODE> Événements pour l'onglet La commutation d'onglet pourrait être semblable à la protection contre, par exemple, des contextuels non référés et de la taille de la fenêtre / positionnement / fermeture / fermeture / fermeture. P>
Il signifie écouter ces événements, ne pas les tirer lui-même.
Le code ci-dessus fonctionne bien dans Safari v3.0.4 Code> (WebKit 530+), le bogue a été résolu. Je l'ai vérifié dans
Google Chrome v3.0.0.195.27 code> et il possède le même bogue de safari, bien qu'il ait une nouvelle version de WebKit. P>
Vous avez raison que les versions récentes de Safari gèrent cela et Chrome ne le fait pas. Je vais juste dire que pour mes objectifs, le soutien de 3 des 4 meilleurs n'est pas si mal.
Chrome v3.0.195.38 se comporte étrangement. Il tire les événements sur l'interrupteur d'onglets mais uniquement lorsque au moins un commutateur de fenêtre se produit.
<script> // Adapted slightly from Sam Dutton // Set name of hidden property and visibility change event // since some browsers only offer vendor-prefixed support var hidden, state, visibilityChange; if (typeof document.hidden !== "undefined") { hidden = "hidden"; visibilityChange = "visibilitychange"; state = "visibilityState"; } else if (typeof document.mozHidden !== "undefined") { hidden = "mozHidden"; visibilityChange = "mozvisibilitychange"; state = "mozVisibilityState"; } else if (typeof document.msHidden !== "undefined") { hidden = "msHidden"; visibilityChange = "msvisibilitychange"; state = "msVisibilityState"; } else if (typeof document.webkitHidden !== "undefined") { hidden = "webkitHidden"; visibilityChange = "webkitvisibilitychange"; state = "webkitVisibilityState"; } // Add a listener that constantly changes the title document.addEventListener(visibilityChange, function() { document.title = document[state]; }, false); // Set the initial value document.title = document[state]; </script>
C'est bien de fournir du code qui pourrait aider à résoudre un problème. Mais dans ce site, nous attendons des réponses pour expliquer la raison pour laquelle et comment. Veuillez ajouter quelques précisions à votre message.
Dans mon expérience, ce n'est pas satisfait en utilisant Flash. Stackoverflow.com/Questtions/1099063/... < / a>
duplicaté possible de est Il y a un moyen de détecter si une fenêtre de navigateur n'est pas active actuellement?