Pour autant que je sache, vous ne pouvez pas tester la fermeture du navigateur ; vous ne pouvez tester qu'une fenêtre (ou un onglet) fermée. Cela suffit généralement, à moins bien sûr qu'un rafraîchissement de page ne se produise, car cela compte à la fois comme la fermeture et la réouverture d'une page Web dans une fenêtre ou un onglet. Ce qu'il faut, c'est un gestionnaire d'événements pour un clic sur le bouton d'actualisation de la page du navigateur, mais je ne suis pas sûr que cela existe. Voici quelque chose :
et aussi
Gestion de l'événement de fermeture du navigateur et de l'actualisation de la page
Une chose que j'ai rencontrée en essayant de trouver quelque chose à propos d'un gestionnaire d'événements d'actualisation de page est la notion d'utilisation du "stockage local". Vous pouvez, dans le cadre du gestionnaire on-before-unload, mettre un petit élément de données, horodaté, dans le stockage local. Activez une sorte de minuterie sur le serveur et attendez que ce délai expire avant d'effacer la session. Lorsque votre page est chargée, testez le stockage local pour cet élément de données. S'il existe et que l'horodatage était très récent, vous savez que la page a été actualisée et vous pouvez faire les choses appropriées en sachant que -- comme envoyer un message AJAX au serveur lui disant de ne pas effacer la session pour l'instant.