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

Window : évènement pagehide

Baseline Large disponibilité

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

L'évènement pagehide de l'interface Window est émis lorsqu'une entrée dans un historique de session est sur le point d'être quittée.

Par exemple, lorsque l'utilisateur·ice clique sur le bouton « Précédent » du navigateur, la page actuelle reçoit un évènement pagehide avant que la page précédente ne soit affichée.

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("pagehide", (event) => { })

onpagehide = (event) => { }

Type d'évènement

Un objet PageTransitionEvent. Hérite de Event.

Event PageTransitionEvent

Propriétés de l'évènement

PageTransitionEvent.persisted Lecture seule

Indique si le document est chargé depuis un cache.

Alias des gestionnaires d'évènements

En plus de l'interface Window, la propriété du gestionnaire d'évènement onpagehide est également disponible sur les cibles suivantes :

Notes d'utilisation

Comme les évènements unload et beforeunload, cet évènement n'est pas déclenché de manière fiable par les navigateurs, en particulier sur mobile. Par exemple, l'évènement pagehide n'est pas du tout déclenché dans le scénario suivant :

  1. Un·e utilisateur·ice mobile visite votre page.
  2. L'utilisateur·ice passe ensuite à une autre application.
  3. Plus tard, l'utilisateur·ice ferme le navigateur depuis le gestionnaire d'applications.

Cependant, contrairement aux évènements unload et beforeunload, cet évènement est compatible avec le cache avant/arrière (angl.) (bfcache), donc ajouter un écouteur à cet évènement n'empêchera pas la page d'être incluse dans le bfcache.

Le meilleur évènement à utiliser pour signaler la fin de la session d'un utilisateur est l'évènement visibilitychange. Dans les navigateurs qui ne prennent pas en charge visibilitychange, l'évènement pagehide est la meilleure alternative.

Si vous essayez spécifiquement de détecter les évènements de déchargement de page, l'évènement pagehide est la meilleure option.

Voir le guide de l'API Page Lifecycle (angl.) pour plus d'informations sur la manière dont cet évènement se rapporte aux autres évènements du cycle de vie de la page.

Exemples

Dans cet exemple, un gestionnaire d'évènements est établi pour surveiller les évènements pagehide et effectuer un traitement spécial si la page est en cours de persistance pour une réutilisation éventuelle.

js
window.addEventListener("pagehide", (event) => {
  if (event.persisted) {
    /* la page n'est pas en train d'être supprimée, elle peut donc être réutilisée plus tard */
  }
});

Cela peut également être écrit en utilisant la propriété du gestionnaire d'évènement onpagehide sur le Window :

js
window.onpagehide = (event) => {
  if (event.persisted) {
    /* la page n'est pas en train d'être supprimée, elle peut donc être réutilisée plus tard */
  }
};

Spécifications

Spécification
HTML
# event-pagehide

Compatibilité des navigateurs

Voir aussi

  • L'évènement pageshow
  • L'API Page Lifecycle (angl.) fournit des recommandations sur les meilleures pratiques pour gérer le comportement du cycle de vie des pages dans vos applications web.
  • PageLifecycle.js (angl.) : une bibliothèque JavaScript qui gère les incohérences entre navigateurs dans le comportement du cycle de vie des pages.
  • Back/forward cache (angl.) explique ce qu'est le cache avant/arrière et ses implications pour divers événements du cycle de vie des pages.