2009-08-03 5 views
3

J'essaie de détecter quand un utilisateur quitte l'onglet du navigateur actuel pour passer à un autre onglet. L'écoute de window.onblur fonctionne bien dans firefox pour détecter quand l'utilisateur change de focus pour une autre fenêtre, mais il ne semble pas se déclencher lorsque l'utilisateur passe à un autre onglet. Cependant, il semble que le onfocus est déclenché lors du passage à l'onglet en question, à partir d'un autre onglet.Est-il possible de détecter lorsqu'un utilisateur passe à un onglet de navigateur différent?

Existe-t-il un moyen de détecter quand l'utilisateur quitte l'onglet en cours?

+0

** Mise à jour: ** A partir de 2013 tous les principaux navigateurs offrent un soutien pour la soi-disant [API visiblité] (https://developer.mozilla.org/en-US/docs/Web/Guide/User_experience/Using_the_Page_Visibility_API? redirectlocale = fr-FR & listslug = DOM/Using_the_Page_Visibility_API). Voir ici pour un échantillon: http://stackoverflow.com/a/19519701/603003 – ComFreek

Répondre

8

Apparemment, dans Firefox, cela fonctionnera pour la commutation de tabulation si vous utilisez document.onBlur au lieu de window.onblur pour le gestionnaire d'événements.

+0

Wow, n'a pas pensé à faire cela, mais c'est logique. Merci! –

3

Cet exemple de code semblait fonctionner pour moi. J'ai édité le code pour afficher une boîte d'alerte quand j'ai changé d'étiquette (ne le faites pas). Il en résulte une boucle infinie ;-) et doit fermer FF en utilisant le gestionnaire de tâches.

Source: http://www.thefutureoftheweb.com/blog/detect-browser-window-focus

function onBlur() { 
    document.body.className = 'blurred'; 
}; 
function onFocus(){ 
    document.body.className = 'focused'; 
}; 

if (/*@[email protected]*/false) { // check for Internet Explorer 
    document.onfocusin = onFocus; 
    document.onfocusout = onBlur; 
} else { 
    window.onfocus = onFocus; 
    window.onblur = onBlur; 
} 
+1

Quelle est cette vérification magique pour Internet Explorer? –

+0

@maksymko - Cela s'appelle [compilation conditionnelle] (http://msdn.microsoft.com/en-us/library/7kx09ct1%28v=VS.80%29.aspx). –

Questions connexes