Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Document : évènement visibilitychange

Baseline Widely available

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis avril 2021.

L'évènement visibilitychange de l'interface Document est déclenché sur le document lorsque son état de visibilité change — par exemple, lorsque l'utilisateur·ice change d'onglet dans le navigateur, navigue vers une nouvelle page, minimise ou ferme le navigateur, ou sur mobile, passe à une autre application.

L'évènement n'est pas annulable.

Syntaxe

Utilisez le nom de l'évènement dans des méthodes comme addEventListener(), ou définissez une propriété de gestionnaire d'évènement.

js
addEventListener("visibilitychange", (event) => { })

onvisibilitychange = (event) => { }

Type d'évènement

Un objet Event générique.

Notes d'utilisation

L'évènement n'inclut pas l'état de visibilité mis à jour du document, mais vous pouvez obtenir cette information à partir de la propriété visibilityState du document.

Cet évènement se déclenche avec un visibilityState qui vaut hidden lorsque l'utilisateur·ice navigue vers une nouvelle page, change d'onglet, ferme l'onglet, minimise ou ferme le navigateur, ou, sur mobile, passe du navigateur à une autre application. La transition vers hidden est le dernier évènement qui peut être observé de manière fiable par la page, donc les développeur·euse·s devraient le considérer comme la fin probable de la session de l'utilisateur·ice (par exemple, pour envoyer des données analytiques).

La transition vers hidden est également un bon moment pour que les pages arrêtent de mettre à jour l'interface utilisateur et interrompent toute tâche que l'utilisateur·ice ne souhaite pas voir s'exécuter en arrière-plan.

Exemples

Mettre la musique en pause lors du passage à l'état caché

Cet exemple met en pause la lecture audio lorsque la page est cachée et reprend la lecture lorsque la page redevient visible. Pour un exemple complet, consultez la documentation L'API Page Visibility : Mettre en pause l'audio lorsque la page est cachée.

js
document.addEventListener("visibilitychange", () => {
  if (document.hidden) {
    playingOnHide = !audio.paused;
    audio.pause();
  } else if (playingOnHide) {
    // Reprendre la lecture si l'audio était « en lecture cachée »
    audio.play();
  }
});

Envoyer des analytiques de fin de session lors de la transition vers l'état caché

Cet exemple considère la transition vers hidden comme la fin de la session de l'utilisateur·ice et envoie les analytiques appropriées en utilisant l'API Navigator.sendBeacon() :

js
document.onvisibilitychange = () => {
  if (document.visibilityState === "hidden") {
    navigator.sendBeacon("/log", analyticsData);
  }
};

Spécifications

Specification
HTML
# event-visibilitychange
HTML
# handler-onvisibilitychange

Compatibilité des navigateurs

Voir aussi