visibilitychange événement n'est pas déclenché lors de la commutation de programme/fenêtre avec ALT+TAB ou en cliquant dans la barre des tâches

Fondamentalement, le problème est avec le comportement de l'événement "visibilitychange".

Il est déclenché:
- Quand je suis passer à un autre onglet dans la fenêtre du navigateur.

  • Quand je clique en réduire /restaurer les boutons de la fenêtre du navigateur.

(c'est ok)

Ce n'est pas déclenchée:
- Lorsque je passe à une autre fenêtre/programme à l'aide de ALT+TAB.

  • Lorsque je passe à une autre fenêtre/programme en cliquant sur la barre des tâches.

(ce qui DEVRAIT déclencher, parce que, tout comme lors de la réduction, la visibilité de la fenêtre peut changer)


W3 Page Visibilité de la Documentation de l'API: http://www.w3.org/TR/page-visibility/

Il n'y a pas de définition de la page de "visibilité" sur ALT+TAB/programme de commutation dans la feuille de spécifications. J'imagine qu'il a quelque chose à faire entre l'OS et le Navigateur.


TESTÉ DANS

  • Navigateurs:
    Chrome 40.0.2214.115 m /Firefox 36.0.1 /Internet Explorer 11.0.9600.17107
  • OS: Windows 8.1

Est-il une solution pour corriger ce comportement? La mise en œuvre est assez simple, j'écoute les "visibilitychange" de l'événement à l'aide de jQuery, puis dans son rappel, j'ai vérifier la valeur de document".visibilityState", mais le problème est que l'événement n'est pas de tir à la date prévue.

$(document).on('visibilitychange', function() {

    if(document.visibilityState == 'hidden') {
        //page is hidden
    } else {
        //page is visible
    }
});

Cela peut être fait sans jQuery trop, mais le ALT+TAB et la barre des tâches commutateur de cacher/montrer un comportement attendu est toujours manquant:

if(document.addEventListener){
    document.addEventListener("visibilitychange", function() {
        //check for page visibility
    });
}

J'ai aussi essayé le ifvisible.js module ( https://github.com/serkanyersen/ifvisible.js ), mais le comportement est le même.

ifvisible.on('blur', function() {
    //page is hidden
});

ifvisible.on('focus', function() {
    //page is visible
});

Je n'ai pas testé sur d'autres navigateurs, parce que si je ne peux pas le faire fonctionner dans google Chrome sur Windows, je n'ai vraiment pas de soins sur les autres navigateurs encore.

Toute aide ou suggestion est la remercie à l'avance.


Mise à JOUR

J'ai essayé à l'aide de différents fournisseurs préfixe pour le nom de l'événement (visibilitychange, webkitvisibilitychange, mozvisibilitychange, msvisibilitychange) mais encore l'événement n'est pas déclenché lorsque je passe à un autre programme dans la barre des tâches ou ALT+TAB, ou même si j'ouvre le menu démarrer dans windows avec la touche windows, qui couvre la totalité de l'écran.

Je peux reproduire exactement le même problème dans Chrome, Firefox et Internet Explorer.

Mise à JOUR #2

Voici un tour d'horizon post que j'ai écrit pour ce problème et une solution de contournement en pure javascript pour résoudre les problèmes rencontrés.

Mise à JOUR #3

Modifié pour inclure une copie de la source blog. (voir accepté de répondre)

Salut bb, Le lien que vous sont fournis ne fonctionne pas. Pouvez-vous me dire la solution que vous trouvez.
hey, j'ai édité le lien, le post est maintenant sur: stereologics.wordpress.com/2015/04/02/...

OriginalL'auteur agbb | 2015-03-11