Détecter le changement de statut actif d'une page web avec JavaScript
Concept et utilisation
La fonction DomActiveChange()
permet de détecter le changement de statut actif d'une page web.
Constructeur
DomActiveChange()
Retourne un object détecteur de changement du statut actif du document.
- Syntaxe
new DomActiveChange();
- Paramètre
Aucun.
- Méthodes de l'instance
detecteur.addListener()
La méthode
addListener()
de l'interfaceDomActiveChange()
ajoute un écouteur au détecteur de changement de statut du document.- Syntaxe
detecteur.addListener(ecouteur);
- Paramètre
ecouteur
(Function)Le paramètre
ecouteur
de la méthodeaddListener()
définit un écouteur de changement de statut du document, qui sera ajouté au détecteur.
Il s'agit d'une fonction de rappel, dont l'argument contiendra le statut actif du document sous forme d'une valeur booléenne.
detecteur.removeListener()
La méthode
removeListener()
de l'interfaceDomActiveChange()
supprime un écouteur du détecteur de changement de statut du document.- Syntaxe
detecteur.removeListener(ecouteur);
- Paramètre
ecouteur
(Function)Le paramètre
ecouteur
de la méthoderemoveListener()
définit un écouteur de changement de statut du document qui sera supprimé du détecteur.
Exemple de détection du changement de statut du document
var detecteur = new DomActiveChange();
var ecouteur = function(statut) {
if (statut === false) {
console.log('Le document est devenu inactif.');
} else {
console.log('Le document est devenu actif.');
detecteur.removeListener(ecouteur); // Supprime l'écouteur du détecteur
}
}
detecteur.addListener(ecouteur); // Ajoute un écouteur au détecteur
Code source de la fonction
function DomActiveChange(){var w=window,d=document,_=this,a=[];_.addListener=function(l){
if(a.indexOf(l)===-1){a.push(l);}};_.removeListener=function(l){var i=a.indexOf(l);if(i>-1){
a.splice(i,1);}};var s=!1,v=d.visibilityState==='visible',f=d.hasFocus(),c=function(){
v=d.visibilityState==='visible';f=d.hasFocus();var b=v&&f?!0:!1;if(b!==s){s=b;
a.forEach(function(l){l(s);});}};w.addEventListener("pagehide",c);
w.addEventListener("pageshow",c);w.addEventListener('blur',c);w.addEventListener('focus',c);
d.addEventListener('visibilitychange',c);return _;}
Dernière mise à jour le .