2009-04-30 7 views
15

Est-ce que quelqu'un sait d'une manière que je peux utiliser javascript pour vérifier quand la fenêtre du navigateur est proche et pop-up un dailog de confirmation pour demander si l'utilisateur confirme pour quitter le navigateur ou changer son esprit de rester?javascript pour vérifier quand la fenêtre du navigateur est proche

+0

Par fenêtre du navigateur, voulez-vous dire la fenêtre de la page ou l'ensemble du navigateur? –

+0

duplication possible de [Fermeture de la fenêtre du navigateur] (http://stackoverflow.com/questions/1631959/browser-window-close-event) –

Répondre

23
window.onbeforeunload = function (e) { 
    var e = e || window.event; 

    //IE & Firefox 
    if (e) { 
    e.returnValue = 'Are you sure?'; 
    } 

    // For Safari 
    return 'Are you sure?'; 
}; 

https://developer.mozilla.org/en/DOM/window.onbeforeunload

+0

Cela devrait probablement être 'return confirm ("Etes-vous sûr? ...") ". – Anonymous

+1

@Anon nope, confirm() renvoie un booléen, votre gestionnaire pour onbeforeunload est requis pour renvoyer une chaîne. –

+0

Eh bien, c'est un comportement particulier. Va montrer combien de fois je l'ai utilisé! – Anonymous

1

Si le navigateur reste en cours d'exécution après que la page est fermée et si le navigateur traite l'événement de l'élément du corps « onbeforeunload » (parfois il est désactivé), et si la Le navigateur permet des fenêtres popup ou des boîtes de message et la possibilité de retourner false à partir de cet événement pour empêcher le changement de page, alors c'est possible. Par exemple, commencez à taper un commentaire sur une page de stackoverflow avec Javascript activé, puis quittez cette page.

1

Cela a fonctionné pour moi:

function closeWin(){ 
var exit = confirm("Do you want to leave this window?"); 
    if(exit==true){ 
     //do something before closing; 
    } 
}  

body onbeforeunload="closeWin()" 
0

Cela fonctionne aussi, à moins que pour IE8

$(window).bind('beforeunload', function (e) { 
     // code to execute when browser is closed 
     e.$.post("func.php", { action: 'action', id_userMsg: '<?php echo $id_user; ?>' });  

    }); 
1

La documentation here encourage les écouter le onbeforeunloadévénement et/ou l'ajout d'un écouteur d'événement sur window .

window.addEventListener('beforeunload', function(e) {}, false); 

Vous pouvez aussi remplir les .onunload ou .onbeforeunload propriétés de window avec une fonction ou une référence de fonction .

Bien que le comportement ne soit pas normalisé d'un navigateur à l'autre, la fonction peut renvoyer une valeur que le navigateur affichera lors de la confirmation de la sortie de la page.

Questions connexes