Quelles sont les différences entre onbeforeunload et onunload? J'ai aussi une question spécifique liée à son utilisation sur l'iPad ... J'ai une page (maPage.html) où j'essaie d'afficher une alerte lorsque la page est fermée (c'est-à-dire que X est pressé pour fermer l'onglet sur l'iPad)
Maintenant, j'ai essayé d'utiliser à la fois window.onunload et window.onbeforeunload Voici mes découvertes sur l'iPad;
En utilisant window.onunload, je peux recevoir une alerte lorsque l'utilisateur accède à une page différente de myPage.html (soit en cliquant sur un lien, soit en effectuant une recherche Google sur myPage.html). Cependant, rien ne se passe lorsque l'onglet est fermé de la vue réduite (X)
En utilisant window.onbeforeunload, je ne reçois aucune alerte même si l'utilisateur accède à une page différente de myPage.html OR s'il ferme l'onglet (X) de la vue minimisée.
Je voulais savoir s'il existe un autre moyen de résoudre ce problème?
Je vous remercie.
onunload
est responsable de l'exécution d'une instruction lorsque la page est fermée. Cela provoque également des problèmes avec IE et AJAX.
onbeforeunload
est plus efficace car il ne s'exécute pas en concurrence avec la fermeture effective de la fenêtre et se déclenche avant onunload
Je sais Opera utilisé pour ne pas reconnaître onbeforeunload
- je ne sais pas s'ils ont corrigé cela, mais j'enregistre toujours l'auditeur pour que les deux soient en sécurité:
window.onunload = window.onbeforeunload = (function(){...
Ajout avec les ans d'AlienWebguy, pour éviter les doubles appels sur les navigateurs qui prennent en charge les deux événements,
var onBeforeUnLoadEvent = false;
window.onunload = window.onbeforeunload= function(){
if(!onBeforeUnLoadEvent){
onBeforeUnLoadEvent = true;
//your code here
}
};
onbeforeunload
:
event.preventDefault();
onunload
:
La seule raison pour laquelle je peux penser pourquoi vous voudriez utiliser onunload
sur onbeforeunload
serait que votre code onunload
pourrait prendre un certain temps, et ne veut pas que l'utilisateur pour voir une fenêtre qui se bloque lors de la fermeture.
Une différence significative (autre que l'annulation) entre les onbeforeunload
et onunload
est que la première est déclenchée pour les liens de téléchargement et la seconde ne l'est pas. Exemple: <a href="https://somewhere.com/thething.Zip">download</a>
déclenchera le gestionnaire onbeforeunload
, mais pas le onunload
.