Ce que je sais, il est possible de détecter si la page est en premier plan ou en arrière - plan- ou plus précisément: si a le focus, ou n'a pas le focus.
var focus = true;
window.onblur = function() { focus = false; action(); }
window.onfocus = function() { focus = true; action(); }
document.onblur = window.onblur;
document.focus = window.focus;
function action(){
if(focus) {
document.body.style.background = "green";
} else {
document.body.style.background = "lightgray";
}
}
try click inside and then outside
L'extrait de code ci-dessus utilise des écouteurs d'événement, onblur
et onfocus
pour les événements à focus
et blur
.
Mieux peut-être d'utiliser la Visibilité de l'API:
- il fonctionne lors de la commutation des onglets (page peut détecter que l'utilisateur a ouvert un autre onglet)
Remarque: lors de la onblur et onfocus vous dira si l'utilisateur passe windows, ça ne veut pas forcément dire qu'il est caché. Pages seulement sont masquées lorsque l'utilisateur passe onglets ou réduit la fenêtre du navigateur contenant de l'onglet.
voir Détecter si le navigateur de l'onglet est actif ou de l'utilisateur est passé loin
http://jsbin.com/lowocepazo/edit?js,sortie
Pour faire défiler, il y a une Intersection Observateur
fournit une manière asynchrone à observer des changements dans l'intersection d'un élément cible avec un élément ancêtre ou avec un document de niveau supérieur de la fenêtre d'affichage
//EDIT:
De nos jours n'est pas possible de détecter de tels cas, comme par exemple dans la 1ère vidéo que vous avez posté (2:09) quand une autre fenêtre est masquée certains éléments:
Si je me trompe, corrigez-moi.
connexes: