Maison > interface Web > js tutoriel > Comment faire la distinction entre l'actualisation de la page et la fermeture du navigateur dans l'événement onUnload ?

Comment faire la distinction entre l'actualisation de la page et la fermeture du navigateur dans l'événement onUnload ?

Patricia Arquette
Libérer: 2024-11-04 03:51:29
original
468 Les gens l'ont consulté

How to Distinguish Between Page Refresh and Browser Close in the onUnload Event?

Distinction entre les actions d'actualisation de page et de fermeture de navigateur

Lorsqu'il est déclenché par une actualisation de page ou par la fermeture d'un navigateur, l'événement ONUNLOAD présente un défi pour différencier les deux actions. .

Pour résoudre ce problème, la solution suivante utilise le stockage local HTML5 et le client/serveur AJAX. communication :

Implémentation de la solution

Page sur le gestionnaire d'événements de chargement

<code class="javascript">function myLoad(event) {
    if (window.localStorage) {
        var t0 = Number(window.localStorage['myUnloadEventFlag']);
        if (isNaN(t0)) t0=0;
        var t1=new Date().getTime();
        var duration=t1-t0;
        if (duration<10*1000) {
            // It's a browser reload
        } else {
            // It's a browser close
        }
    }
}</code>
Copier après la connexion

Page sur le gestionnaire d'événements de déchargement

<code class="javascript">function myUnload(event) {
    if (window.localStorage) {
        // Flag the page as unloading
        window.localStorage['myUnloadEventFlag']=new Date().getTime();
    }

    // Notify the server to disconnect the user in a few seconds
    askServerToDisconnectUserInAFewSeconds();
}</code>
Copier après la connexion

Implémentation du serveur

  • Collectez les demandes de déconnexion dans une liste.
  • Définissez un fil de discussion de minuterie sur inspectez régulièrement la liste et déconnectez les utilisateurs après un délai d'attente (5 secondes).
  • Supprimez les demandes de déconnexion de la liste dès réception des demandes d'annulation du client.

Points clés

  • En utilisant l'événement unload au lieu de beforeUnload, les pièces jointes peuvent être traitées correctement.
  • Cette solution est limitée aux navigateurs prenant en charge Stockage local HTML5.
  • Les approches alternatives basées sur la position event.clientY ou X sont moins fiables.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal