Détecter la fermeture du navigateur ou des onglets

306

Existe-t-il un code JavaScript / jQuery inter-navigateurs pour détecter si le navigateur ou un onglet de navigateur est fermé, mais pas en raison d'un clic sur un lien?

cometta
la source
1
Voir ma réponse à cette question: stackoverflow.com/questions/3735198/…
Nivas
Utilisez la sessionStorage propriété, elle expirera à la fermeture du navigateur. w3schools.com/jsref/prop_win_sessionstorage.asp
csandreas1
Vérifiez cette réponse! Je l'ai trouvé extrêmement utile et couvre la majorité des cas. stackoverflow.com/a/26275621/7192927
SukanyaPai

Réponses:

273

Si je vous comprends bien, vous voulez savoir quand un onglet / fenêtre est effectivement fermé. Eh bien, AFAIK est le seul moyen Javascriptde détecter ce genre de choses onunloadet les onbeforeunloadévénements.

Malheureusement (ou heureusement?), Ces événements sont également déclenchés lorsque vous quittez un site via un linkou un bouton de retour de votre navigateur. C'est donc la meilleure réponse que je puisse donner, je ne pense pas que vous puissiez détecter nativement un pur closeen Javascript. Corrigez-moi si je me trompe ici.

jAndy
la source
39
Correct. Vous ne pouvez détecter que le déchargement de la page, pas la fermeture de la fenêtre. De plus, onbeforeunload n'est pas standard, il n'est donc pas pris en charge par tous les navigateurs.
Guffa
7
Je voulais également utiliser la fonction «à la fermeture», mais j'ai remarqué que mes utilisateurs rafraîchiraient parfois l'écran en appuyant sur F5. Étant donné que mes gestionnaires `` à la fermeture '' sont invoqués lors d'une telle actualisation, cela signifie que je ne peux pas l'utiliser comme j'en avais besoin (qui était un véritable `` onglet ou fenêtre de fermeture '') ... bon sang, nous avons besoin d'un nouveau modèle d'événement pour tout ça!
Jeach
1
Ne fonctionne plus sur le chrome / l'opéra ... chromestatus.com/feature/5349061406228480
Samir Seetal
2
Bien sûr, cela fonctionnera toujours, ils ont juste supprimé une Stringvaleur de retour personnalisée de onbeforeunload. Vous ne pouvez donc plus afficher de message personnalisé avant le déchargement.
jAndy
@jAndy @Guffa Comment puis-je savoir quelle fenêtre a été déclenchée unload?
Egor Dudyak
125

Depuis la documentation de Firefox

Pour certaines raisons, les navigateurs Webkit ne suivent pas les spécifications de la boîte de dialogue. Un exemple presque transversal serait proche de l'exemple ci-dessous.

window.addEventListener("beforeunload", function (e) {
  var confirmationMessage = "\o/";

  (e || window.event).returnValue = confirmationMessage; //Gecko + IE
  return confirmationMessage;                            //Webkit, Safari, Chrome
});

Cet exemple pour gérer tous les navigateurs.

mohamed-ibrahim
la source
2
C'est la seule solution qui a fonctionné pour mon navigateur Chrome. Je n'en ai pas essayé d'autres.
Chase Roberts
4
oui, j'essaye beaucoup de solutions et je viens avec ceci à la fin, combinaison pour les meilleures réponses, et je le teste sur tous les navigateurs.
mohamed-ibrahim
1
Cette méthode ne fonctionne pas parfaitement à la fermeture de l'onglet lors de l'utilisation de Firefox (> = ver. 44) avec seulement l'onglet ouvert.
Rajkishore
À partir d'aujourd'hui, en utilisant toutes les dernières versions des navigateurs, l'invite fonctionne lors de la fermeture de l'onglet, de la navigation ou de la fermeture du navigateur pour Chrome, Firefox, Opera, IE11 et Edge et fonctionne également lorsque vous avez plusieurs onglets ouverts, sauf pour Chrome où Chrome ferme tous les onglets sans invite, bien sur ma machine au moins.
Thierry
ne pas donner une sortie appropriée telle que définie en question. Cela a également déclenché un événement de sortie de page non seulement la fermeture du navigateur ou la fermeture de l'onglet
Sunil Acharya
48

Solution simple

window.onbeforeunload = function () {
    return "Do you really want to close?";
};

la source
7
Quel genre de sorcellerie est ce? (y) ça marche sur tous les navigateurs? fonctionne très bien sur le chrome
Ziv Weissman
5
il se déclenche lorsque vous actualisez la page. c'est mon seul problème.
Leo Leoncio
6
Cette solution n'est plus sur Firefox et Chrome
Mehdi Dehghani
Cela a également déclenché un événement de sortie de page non seulement la fermeture du navigateur ou la fermeture de l'onglet
Sunil Acharya
20
<body onbeforeunload="ConfirmClose()" onunload="HandleOnClose()">

var myclose = false;

function ConfirmClose()
{
    if (event.clientY < 0)
    {
        event.returnValue = 'You have closed the browser. Do you want to logout from your application?';
        setTimeout('myclose=false',10);
        myclose=true;
    }
}

function HandleOnClose()
{
    if (myclose==true) 
    {
        //the url of your logout page which invalidate session on logout 
        location.replace('/contextpath/j_spring_security_logout') ;
    }   
}

// Cela fonctionne dans IE7, si vous fermez un onglet ou un navigateur avec un seul onglet

jyothis
la source
2
ouais. mais pour le navigateur à onglets multiples comme ie8, firefox. il y a un problème à utiliser cela?
cometta
Il s'avère que l'utilisation de ce code dans IE9 provoquera l'apparition de ce message lorsque l'utilisateur clique sur les boutons Précédent, Suivant ou Actualiser avec sa souris.
Steve Wortham
Juste une remarque que nous avons implémenté une solution similaire en 2007. Cette solution ne fonctionne plus dans IE9 il y a environ une semaine. Il a cessé de fonctionner (ou n'a peut-être jamais fonctionné) dans les navigateurs à onglets depuis longtemps.
tjfo
J'ai injecté window.onunload = "alert('wait')"et window.onbeforeunload = "alert('wait... chrome!')"utilisé la console dans Chromium / Ubuntu mais aucun n'a tiré lorsque j'ai fermé l'onglet.
icedwater
window.onunload = "alert('wait')"et pareil ne devrait pas vraiment fonctionner. "La fonction doit affecter une valeur de chaîne à la propriété returnValue de l'objet Event et renvoyer la même chaîne". Veuillez lire l' article de MDN
Dmitry Vyprichenko
8

J'avais besoin de déconnecter automatiquement l'utilisateur lorsque le navigateur ou l'onglet se ferme, mais pas lorsque l'utilisateur navigue vers d'autres liens. Je ne voulais pas non plus qu'une invite de confirmation s'affiche lorsque cela se produit. Après avoir lutté avec cela pendant un certain temps, en particulier avec IE et Edge, voici ce que j'ai fini de faire (vérifié travailler avec IE 11, Edge, Chrome et Firefox) après avoir basé l'approche sur cette réponse .

Tout d'abord, démarrez un compte à rebours sur le serveur dans le beforeunloadgestionnaire d'événements de JS. Les appels ajax doivent être synchrones pour qu'IE et Edge fonctionnent correctement. Vous devez également utiliser return;pour empêcher la boîte de dialogue de confirmation de s'afficher comme suit:

    window.addEventListener("beforeunload", function (e) {        
      $.ajax({
          type: "POST",
          url: startTimerUrl,
          async: false           
      });
      return;
    });

Le démarrage de la minuterie définit le cancelLogoutdrapeau sur faux . Si l'utilisateur actualise la page ou navigue vers un autre lien interne, l' cancelLogoutindicateur sur le serveur est défini sur true . Une fois l'événement de temporisation écoulé, il vérifie l' cancelLogoutindicateur pour voir si l'événement de déconnexion a été annulé. Si la minuterie a été annulée, cela arrêterait la minuterie. Si le navigateur ou l'onglet était fermé, l' cancelLogoutindicateur resterait faux et le gestionnaire d'événements déconnecterait l'utilisateur.

Remarque sur la mise en œuvre: j'utilise ASP.NET MVC 5 et j'annule la déconnexion dans une Controller.OnActionExecuted()méthode remplacée .

Ionian316
la source
Cela a très bien fonctionné. Y a-t-il une raison pour laquelle vous faites "async: false"? Cela génère des avertissements selon lesquels les appels AJAX synchrones sont obsolètes. Merci!
cat_in_hat
1
@FoundWaldoException, comme indiqué dans la réponse, j'ai trouvé que async devait être défini sur false pour que cela fonctionne dans IE et Edge.
Ionian316
Comment annuler la déconnexion OnActionExecuted?
Kiquenet
@Kiquenet Arrêtez simplement le minuteur qui a été démarré dans votre code.
Ionian316
6

Désolé, je n'ai pas pu ajouter de commentaire à l'une des réponses existantes, mais au cas où vous souhaiteriez implémenter une sorte de boîte de dialogue d'avertissement, je voulais simplement mentionner que toute fonction de gestionnaire d'événements a un argument - événement. Dans votre cas, vous pouvez appeler event.preventDefault () pour interdire de quitter la page automatiquement, puis lancer votre propre boîte de dialogue. Je considère que c'est une meilleure option que d'utiliser l'alerte standard laide et non sécurisée (). J'ai personnellement implémenté mon propre ensemble de boîtes de dialogue basées sur l'objet kendoWindow (l'interface utilisateur Kendo de Telerik, qui est presque entièrement open source, à l'exception de kendoGrid et kendoEditor). Vous pouvez également utiliser des boîtes de dialogue à partir de l'interface utilisateur jQuery. Veuillez noter cependant que ces choses sont asynchrones et que vous devrez lier un gestionnaire à l'événement onclick de chaque bouton, mais tout cela est assez facile à implémenter.

Cependant, je conviens que l'absence de l'événement de fermeture réel est terrible: si vous, par exemple, souhaitez réinitialiser votre état de session en arrière-plan uniquement en cas de fermeture réelle, c'est un problème.

Alex Iurovetski
la source
6

Pour des tâches similaires, vous pouvez utiliser sessionStoragepour stocker des données localement jusqu'à la fermeture de l'onglet du navigateur.

L' sessionStorageobjet stocke les données pour une seule session (les données sont supprimées lorsque l'onglet du navigateur est fermé). ( W3Schools )

Ceci est ma plume .

<div id="Notice">
    <span title="remove this until browser tab is closed"><u>dismiss</u>.</span>
</div>
<script>
    $("#Notice").click(function() {
     //set sessionStorage on click
        sessionStorage.setItem("dismissNotice", "Hello");
        $("#Notice").remove();
    });
    if (sessionStorage.getItem("dismissNotice"))
    //When sessionStorage is set Do stuff...
        $("#Notice").remove();
</script>
csandreas1
la source
5

Il n'y a aucun événement, mais il existe une propriété window.closedqui est prise en charge dans tous les principaux navigateurs au moment de la rédaction de cet article. Ainsi, si vous aviez vraiment besoin de savoir, vous pourriez interroger la fenêtre pour vérifier cette propriété.

if(myWindow.closed){do things}

Remarque: Interroger quoi que ce soit n'est généralement pas la meilleure solution. L' window.onbeforeunloadévénement doit être utilisé si possible, la seule mise en garde étant qu'il se déclenche également si vous vous éloignez.

dlsso
la source
4
$(window).unload( function () { alert("Bye now!"); } );
Poonam Bhatt
la source
9
Cela ne fonctionnera pas sur Firefox ou Chrome. Essayez beforeunloadsi vous souhaitez afficher une alerte. Comme ça:$(window).on('beforeunload', function(){ alert ('Bye now')});
AdrianoRR
5
selon les documents jQuery "La plupart des navigateurs ignoreront les appels à alert (), confirm
katzmopolitan
4

Essayez de l'utiliser:

window.onbeforeunload = function (event) {
    var message = 'Important: Please click on \'Save\' button to leave this page.';
    if (typeof event == 'undefined') {
        event = window.event;
    }
    if (event) {
        event.returnValue = message;
    }
    return message;
};

$(function () {
    $("a").not('#lnkLogOut').click(function () {
        window.onbeforeunload = null;
    });
    $(".btn").click(function () {
        window.onbeforeunload = null;
});
});
Fezal halai
la source
3

J'ai trouvé un moyen qui fonctionne sur tous mes navigateurs .

Testé sur les versions suivantes: Firefox 57, Internet Explorer 11, Edge 41, l'un des derniers Chrome (il ne montrera pas ma version)

Remarque : onbeforeunload se déclenche si vous quittez la page de toutes les manières possibles (actualisation, fermeture du navigateur, redirection, lien, soumission ..). Si vous ne souhaitez que cela se produise à la fermeture du navigateur, liez simplement les gestionnaires d'événements.

  $(document).ready(function(){         

        var validNavigation = false;

        // Attach the event keypress to exclude the F5 refresh (includes normal refresh)
        $(document).bind('keypress', function(e) {
            if (e.keyCode == 116){
                validNavigation = true;
            }
        });

        // Attach the event click for all links in the page
        $("a").bind("click", function() {
            validNavigation = true;
        });

        // Attach the event submit for all forms in the page
        $("form").bind("submit", function() {
          validNavigation = true;
        });

        // Attach the event click for all inputs in the page
        $("input[type=submit]").bind("click", function() {
          validNavigation = true;
        }); 

        window.onbeforeunload = function() {                
            if (!validNavigation) {     
                // ------->  code comes here
            }
        };

  });
Syno
la source
Comment un gestionnaire séparé pour la fermeture du navigateur sera ajouté ... Je ne pense pas que nous ayons un événement séparé pour cela.
blazehub
Ce fut très utile. J'avais besoin d'ajuster l'ancre A pour ne déclencher que les hyperliens réels. Sinon, cliquer sur les onglets d'amorçage l'a gâché: $ ("a [href! = '']"). Not ('[href ^ = "#"]'). Bind ("click", function ()
Ken Forslund
3

Étant donné que personne ne l'a encore mentionné (8 ans et plus plus tard): Un WebSocket peut être un autre moyen efficace de détecter un onglet fermé. Tant que l'onglet est ouvert et pointé vers l'hôte, le client est en mesure de maintenir une connexion WebSocket active à l'hôte.

Mise en garde: veuillez noter que cette solution n'est vraiment viable pour un projet que si un WebSocket ne nécessite aucun frais supplémentaire significatif par rapport à ce que vous faites déjà.

Dans un délai raisonnable (par exemple 2 minutes), le côté serveur peut déterminer que le client a disparu après la déconnexion du WebSocket et effectuer toute action souhaitée, comme la suppression des fichiers temporaires téléchargés. (Dans mon cas d'utilisation extrêmement spécialisé, mon objectif était de mettre fin à un serveur d'application localhost trois secondes après la fin de la connexion WebSocket et de la fin de toutes les activités CGI / FastCGI - aucune autre connexion persistante ne m'affecte.)

J'ai rencontré des problèmes pour que le gestionnaire d'événements onunload fonctionne correctement avec les balises (comme recommandé par cette réponse ). La fermeture de l'onglet n'a pas semblé déclencher la balise et les onglets ouverts l'ont déclenchée d'une manière qui pourrait potentiellement causer des problèmes. Un WebSocket a résolu le problème que je rencontrais plus proprement car la connexion se ferme à peu près au même moment que l'onglet se ferme et le changement de page dans l'application ouvre simplement une nouvelle connexion WebSocket bien dans la fenêtre de délai.

CubicleSoft
la source
2
C'est bon. Mais, ne pouvez-vous pas partager de code ou de procédure pour le gérer? Sans cela pour un noob comme moi ne peut pas comprendre
P Satish Patro
En fait, je n'étais pas clair dans mon premier commentaire. Je ne connais pas de socket web. Donc, je voulais juste voir comment gérer
P Satish Patro
1
Le lien dans mon commentaire ci-dessus renvoie à un exemple de code WebSocket JS. La partie JS client est la partie facile. Ce code est pour mon cas d'utilisation très spécifique mais où je dois mettre fin à l'ensemble du serveur d'applications en temps opportun. La façon dont vous écrivez un serveur WebSocket dépend de vous et nécessite une configuration côté serveur pour tout connecter (beaucoup de gens préfèrent un backend NodeJS avec frontend Nginx). L'écriture d'un serveur compatible TCP / IP est un sujet complexe qui ne convient pas à la discussion dans les commentaires et il est exagéré d'en configurer un juste pour détecter ce problème particulier.
CubicleSoft
2
//Detect Browser or Tab Close Events
$(window).on('beforeunload',function(e) {
  e = e || window.event;
  var localStorageTime = localStorage.getItem('storagetime')
  if(localStorageTime!=null && localStorageTime!=undefined){
    var currentTime = new Date().getTime(),
        timeDifference = currentTime - localStorageTime;

    if(timeDifference<25){//Browser Closed
       localStorage.removeItem('storagetime');
    }else{//Browser Tab Closed
       localStorage.setItem('storagetime',new Date().getTime());
    }

  }else{
    localStorage.setItem('storagetime',new Date().getTime());
  }
});

Lien JSFiddle

Salut à tous, J'ai pu obtenir des clics «Détecter le navigateur et fermer l'événement» en utilisant le stockage local et l'horodatage du navigateur. J'espère que vous pourrez tous résoudre vos problèmes en utilisant cette solution.

Après mes recherches initiales, j'ai découvert que lorsque nous fermons un navigateur, le navigateur fermera tous les onglets un par un pour fermer complètement le navigateur. Par conséquent, j'ai observé qu'il y aura très peu de délai entre la fermeture des onglets. J'ai donc pris ce délai comme principal point de validation et capable de détecter les événements de fermeture du navigateur et de l'onglet.

Je l'ai testé sur la version 76.0.3809.132 du navigateur Chrome et j'ai trouvé qu'il fonctionnait

:) Votez si vous avez trouvé ma réponse utile ....

ramojuraju
la source
Eh bien, cela m'a donné une idée. Je fixe un horodatage plus 10 secondes dans le stockage local après la connexion et sur l'événement avant le déchargement. Au chargement, je vérifie si le temps a passé, puis redirige vers la page de connexion. Merci :)
G4BB3R
1
window.onbeforeunload = function() {
  console.log('event');
  return false; //here also can be string, that will be shown to the user
}
IvanM
la source
2
here also can be string, that will be shown to the userce n'est pas le cas, sur firefox, il le fait en chrome cependant ...
TrySpace
Toute valeur de retour (chaîne) est affichée uniquement dans MSIE <= 11. Donc, fondamentalement inutile pour tous les autres navigateurs.
OSWorX
1

Il est possible de le vérifier à l'aide de window.closed dans un gestionnaire d'événements sur un événement de déchargement comme celui-ci, mais l'utilisation du délai d'attente est requise (le résultat ne peut donc pas être garanti si smth retarde ou empêche la fermeture de la fenêtre):

Exemple de JSFiddle (testé sur lates Safari, FF, Chrome, Edge et IE11)

var win = window.open('', '', 'width=200,height=50,left=200,top=50');
win.document.write(`<html>
   <head><title>CHILD WINDOW/TAB</title></head>
   <body><h2>CHILD WINDOW/TAB</h2></body>
</html>`);
win.addEventListener('load',() => {
    document.querySelector('.status').innerHTML += '<p>Child was loaded!</p>';
});
win.addEventListener('unload',() => {
    document.querySelector('.status').innerHTML += '<p>Child was unloaded!</p>';
    setTimeout(()=>{
        document.querySelector('.status').innerHTML +=  getChildWindowStatus();
    },1000);
});
win.document.close()
document.querySelector('.check-child-window').onclick = ()=> {
    alert(getChildWindowStatus());
}
function getChildWindowStatus() {
  if (win.closed) { 
      return 'Child window has been closed!';
  } else {
      return 'Child window has not been closed!';
  }
}
Rvach.Flyver
la source
1

J'ai essayé toutes les solutions ci-dessus, aucune d'entre elles n'a vraiment fonctionné pour moi, spécialement parce qu'il y a des composants Telerik dans mon projet qui ont un bouton 'Fermer' pour les fenêtres popup, et il appelle l'événement 'beforeunload'. De plus, le sélecteur de boutons ne fonctionne pas correctement lorsque vous avez une grille Telerik dans votre page (je veux dire des boutons à l'intérieur de la grille). Je ne peux donc pas utiliser l'une des suggestions ci-dessus. Enfin, c'est la solution qui a fonctionné pour moi. J'ai ajouté un événement onUnload sur la balise body de _Layout.cshtml. Quelque chose comme ça:

<body onUnload="LogOff()">

puis ajoutez la fonction LogOff pour rediriger vers Account / LogOff qui est une méthode intégrée dans Asp.Net MVC. Maintenant, lorsque je ferme le navigateur ou l'onglet, il redirige vers la méthode LogOff et l'utilisateur doit se connecter lors de son retour. Je l'ai testé dans Chrome et Firefox. Et il fonctionne!

  function LogOff() {
        $.ajax({
            url: "/Account/LogOff",
            success: function (result) {

                                        }
               });
       }
Amir978
la source
0
window.onbeforeunload = function ()
{       

    if (isProcess > 0) 
    {
        return true;       
    }   

    else
    { 
        //do something      
    }
}; 

Cette fonction affiche une boîte de dialogue de confirmation si vous fermez la fenêtre ou actualisez la page pendant un processus dans le navigateur. Cette fonction fonctionne dans tous les navigateurs. Vous devez définir isProcess var dans votre processus ajax.

Hari
la source
échantillon complet pour l'ensemble isProcess?
Kiquenet
0
window.addEventListener("beforeunload", function (e) {
 var confirmationMessage = "tab close";

 (e || window.event).returnValue = confirmationMessage;     //Gecko + IE
 sendkeylog(confirmationMessage);
 return confirmationMessage;                                //Webkit, Safari, Chrome etc.
}); 
user3098847
la source
En fait, je voulais afficher un message de confirmation si l'utilisateur ferme l'onglet puis UNIQUEMENT. Cela fonctionne pour moi. Mais je suis face à un problème qui, si je suis en cliquant sur un lien de même page , puis aussi sa confirmation indiquant message.For moe se réfèrent: w3schools.com/code/tryit.asp?filename=FEK2KWUN9R8Z @Tunaki
Mohammed
1
c'est quoi sendkeylog?
Kiquenet
0

Comme @jAndy l'a mentionné, il n'y a pas de code javascript correctement pour détecter la fermeture d'une fenêtre. Je suis parti de ce que @Syno avait proposé.

Je suis passé par une situation comme celle-ci et à condition de suivre ces étapes, vous pourrez le détecter.
Je l'ai testé sur Chrome 67+ et Firefox 61+.

var wrapper = function () { //ignore this

var closing_window = false;
$(window).on('focus', function () {
    closing_window = false; 
   //if the user interacts with the window, then the window is not being 
   //closed
});

$(window).on('blur', function () {

    closing_window = true;
    if (!document.hidden) { //when the window is being minimized
        closing_window = false;
    }
    $(window).on('resize', function (e) { //when the window is being maximized
        closing_window = false;
    });
    $(window).off('resize'); //avoid multiple listening
});

$('html').on('mouseleave', function () {
    closing_window = true; 
    //if the user is leaving html, we have more reasons to believe that he's 
    //leaving or thinking about closing the window
});

$('html').on('mouseenter', function () {
    closing_window = false; 
    //if the user's mouse its on the page, it means you don't need to logout 
    //them, didn't it?
});

$(document).on('keydown', function (e) {

    if (e.keyCode == 91 || e.keyCode == 18) {
        closing_window = false; //shortcuts for ALT+TAB and Window key
    }

    if (e.keyCode == 116 || (e.ctrlKey && e.keyCode == 82)) {
        closing_window = false; //shortcuts for F5 and CTRL+F5 and CTRL+R
    }
});

// Prevent logout when clicking in a hiperlink
$(document).on("click", "a", function () {
    closing_window = false;
});

// Prevent logout when clicking in a button (if these buttons rediret to some page)
$(document).on("click", "button", function () {
    closing_window = false;

});
// Prevent logout when submiting
$(document).on("submit", "form", function () {
    closing_window = false;
});
// Prevent logout when submiting
$(document).on("click", "input[type=submit]", function () {
    closing_window = false;
});

var toDoWhenClosing = function() {

    //write a code here likes a user logout, example: 
    //$.ajax({
    //    url: '/MyController/MyLogOutAction',
    //    async: false,
    //    data: {

    //    },
    //    error: function () {
    //    },
    //    success: function (data) {
    //    },
    //});
};


window.onbeforeunload = function () {
    if (closing_window) {
        toDoWhenClosing();
    }
};

};

Bruno Henrique
la source
1
Vous avez des problèmes avec votre code javascript. La première chose que j'ai remarquée est que vous vous lierez continuellement resizelorsque la fenêtre est floue. S'il devient flou 100x, vous aurez 100 auditeurs, ce qui ralentira le navigateur.
Kyle
Je mets un $ (window) .off ('resize'), serait-ce suffisant?
Bruno Henrique
Techniquement, mais cela supprimera également tous les autres gestionnaires ajoutés ailleurs via jQuery.
Kyle
-2

essayez ceci, je suis sûr que cela fonctionnera pour vous.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type='text/javascript'>
    $(function() {

        try{
            opera.setOverrideHistoryNavigationMode('compatible');
            history.navigationMode = 'compatible';
        }catch(e){}

        function ReturnMessage()
        {
            return "wait";
        }

        function UnBindWindow()
        {
            $(window).unbind('beforeunload', ReturnMessage);
        }

        $(window).bind('beforeunload',ReturnMessage );
    });
</script>
Tejash Raval Prajapati
la source
-3

Essaye ça. Ça va marcher. La méthode de déchargement jquery est obsolète.

window.onbeforeunload = function(event) {
    event.returnValue = "Write something clever here..";
};
Arda Ç.
la source