Question de JavaScript: Onforeforeload ou Onunload?

Je souhaite donc stocker des informations dans le stockage local d'un navigateur lorsque la page est actualisée ou que l'utilisateur quitte la page pour une utilisation ultérieure. J'ai pensé que j'utiliserais un Javascript pour détecter l'événement et enregistrer l'état de la visite de la page.

Maintenant, ma difficulté est: dois-je utiliser la méthode Onbeforeunload ou Onunload pour atteindre cet objectif?

Merci

Pourquoi ne pas l'enregistrer avec les deux pour être sur le bon côté? Il suffit que l'auditeur vérifie si les données sont encore stockées et sortent tôt.

Voici un exemple rapide utilisant les propriétés de l'événement:

 window.onunload = window.onbeforeunload = (function(){ var didMyThingYet=false; return function(){ if (didMyThingYet) return; didMyThingYet=true; // do your thing here... } }()); 

Ou vous pouvez utiliser attachEvent:

 (function(){ var didMyThingYet=false; function listener (){ if (didMyThingYet) return; didMyThingYet=true; // do your thing here... } window.attachEvent("onbeforeunload", listener); window.attachEvent("onunload", listener); }()); 

L'endroit approprié pour le faire est déconseillé. Onbeforenload est destiné à être utilisé lorsque vous devrez empêcher l'utilisateur de quitter la page, comme lorsqu'il y a des données non enregistrées.

Je serais fatigué d'écrire un code pour couvrir tous les cas car vous n'êtes pas prêt à tester tous les cas. Si vous faites vos recherches et trouvez que c'est trop compliqué dans tous les navigateurs, ouais, allez-y et faites autant que vous le pouvez. Cependant, je crois qu'il n'y a pas de problème avec le déchargement de stockage local. En réalité, j'ai rencontré un problème en essayant d'envoyer des informations sur le serveur. Cela n'a pas eu lieu de manière fiable dans les navigateurs, de sorte que je me suis retrouvé avec une approche qui a utilisé à la fois déchargement et avant charge, mais seulement après une diligence raisonnable.

Donc, ma suggestion est de le faire en charge, vérifiez tous vos navigateurs.

Je crois que Onbeforeunload est un pari sûr. Il est possible pour le navigateur de ne pas exécuter le script onunload complètement – par exemple, si vous avez une alerte en charge, chrome ne s'affichera pas si vous fermez la fenêtre.

De mon expérience: utilisez une onunload car Opera ne prend pas en charge l'autre événement. Oui, je sais … Opera … mais encore 🙂