Événement à déclencher lorsque vous quittez le site Web ou ferme le navigateur

J’essaie pendant un moment d’exécuter une fonction javascript lorsqu’un utilisateur quitte le site Web en tapant une adresse dans le navigateur et en appuyant sur la touche retour ou lorsque l’utilisateur ferme le navigateur en cliquant sur le bouton “x”.

J’ai essayé l’événement de déchargement mais je ne peux pas obtenir l’alerte

voici ce que je fais:

$(window).unload(function () { alert("Are you sure?"); }); 

également

 $(body).unload(function () { alert("Are you sure?"); }); 

Je suis à court d’idée!

Vous pouvez écouter l’événement beforeunload qui se déclenche avant l’événement unload, lorsque la page est déchargée.

 $(window).on('beforeunload', function(){ // ... }) 

Certains navigateurs (tels que Chrome) bloquent les alertes dans les gestionnaires d’événements de déchargement, afin d’éviter précisément ce type de messages gênants. Essayez un fichier console.log ou insérez un point d’arrêt pour savoir si le gestionnaire est déclenché lorsque vous ne disposez pas d’une alerte.

SO question sur une ligne similaire:

window.onunload ne fonctionne pas correctement dans le navigateur Chrome. Quelqu’un peut-il m’aider?

Vous ne pouvez transmettre l’alerte qu’en renvoyant une chaîne dans un gestionnaire beforeunload (HT @undefined), mais j’éviterais même cela, car les fenêtres contextuelles sont généralement mauvaises et que la plupart des gens effectuent un traitement minimal pour résoudre le problème. option de départ avant qu’ils ne pensent réellement au contenu de la boîte.

La fonction que vous avez définie dans window.onbeforeunload si elle retourne une chaîne, une fenêtre de confirmation de navigation contenant ce message s’affichera.

Les alertes peuvent être ignorées!

 window.onbeforeunload = function() { return "All unsaved data will be lost. Are you sure?"; }; 

Certains navigateurs traitent le onbeforeunload différemment. Firefox récent par exemple ignorera votre chaîne de retour et affichera simplement un message standard.

 $(window).bind('beforeunload', function(){ alert("Are your sure?") });