Distinction entre les actions d'actualisation et de fermeture du navigateur
Déterminer la distinction entre l'actualisation d'une page et la fermeture d'un navigateur peut sembler difficile, car les deux actions déclenchent l'événement ONUNLOAD. Cependant, il existe une solution à cette énigme.
Solution :
Cette approche exploite le stockage local HTML5 et la communication serveur-client :
Gestionnaire ONUNLOAD : Sur la page, ajoutez un gestionnaire de déchargement à la fenêtre en utilisant du pseudo-JavaScript :
<code class="javascript">function myUnload(event) { if (window.localStorage) { window.localStorage['myUnloadEventFlag'] = new Date().getTime(); } askServerToDisconnectUserInAFewSeconds(); // Synchronous AJAX call }</code>
Cette fonction :
Gestionnaire ONLOAD : Sur le corps, ajoutez un gestionnaire 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) { // Browser reload askServerToCancelDisconnectionRequest(); // Asynchronous AJAX call } else { // Tab/window close // Perform desired actions (e.g., do nothing) } } }</code>
Cette fonction :
Cette solution permet de différencier les fermetures d'onglets/fenêtres, les actions de rechargement, les liens suivis et les formulaires soumis. Il est applicable dans les navigateurs prenant en charge le stockage local HTML5. Notez cependant qu'il repose sur l'événement unload et peut ne pas être compatible avec les anciens navigateurs comme MSIE7.
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!