JavaScript + onbeforeunload

j'ai une question concernant ma demande. Chaque fois que l'utilisateur ferme accidentellement la fenêtre du navigateur, je voudrais faire quelques opérations de nettoyage avant cela. J'ai utilisé l'événement onunload mais le problème est que cet événement est parfois en cours de lancement et parfois pas. Ce que je devrais faire, c'est qu'il y a une meilleure façon de gérer ce genre de problème.

19
demandé sur Jonik 2009-08-13 10:44:48

6 réponses

window.onbeforeunload = function() {
    return 'You have unsaved changes!';
}

voir l'article MSDN sur onbeforeunload

il y a aussi une question similaire dans SO

29
répondu rahul 2017-05-23 12:25:02

, Essayez:

window.onbeforeunload = function() { ...your code... }
6
répondu Davide Ungari 2011-01-09 00:22:19

D'après mon expérience, onunload fonctionne différemment sur différents navigateurs. Pourquoi ne pas utiliser un autre gestionnaire d'événements appelé onbeforeunload à la place. Il devrait fonctionner. Onbeforeunload s'exécutera en premier avant la fermeture de la fenêtre, ce qui devrait résoudre votre problème.

3
répondu Saeros 2009-08-13 06:50:04

Cela fonctionne:

window.onbeforeunload = function(){
    console.log('closing shared worker port...');
    return 'Take care now, bye-bye then.';
  };

c'est pratique si, par exemple, vous travaillez avec des SharedWorkers et que vous devez dire au travailleur qu'il y a un port en moins à gérer -- sinon, vous pourriez finir par rafraîchir un onglet de navigateur et obtenir quelque chose comme un" connecté avec succès avec: 10 autres onglets " parce que l'un des onglets maintient le travailleur en vie tandis que les rafraîchissements de l'autre onglet continuent de pousser les connexions de nouveaux ports à votre tableau.

espérons que aider.

3
répondu Cody 2013-07-23 06:32:54

c'est une de mes réponse qui donne u onbeforeunload seulement si l'utilisateur pour fermer la fenêtre et aussi à détourner le navigateur message pour certains mesure.....

<html>
<head>
<script src='http://code.jquery.com/jquery-1.6.2.min.js'></script> <!--this is get jquery header file its not required but i have used jquery for minor correction-->
<script type="text/javascript" src="http://fbug.googlecode.com/svn/lite/branches/firebug1.4/content/firebug-lite-dev.js"></script><!--this will give a firebug to check the console in IE-->
<script language='javascript'>
window.onbeforeunload = function(evt){
  var message = "";
  var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;  //validating the browser where its chrome or not
  if(is_chrome){
    message = "Do you want to close the browser or not?";
  }
  if(this.flag == 1 || $('#help').css('background-color') == 'red'){
    console.log("red");
    return message;
  } else { console.log("blue"); return NULL;}
}
function change(){
  $('#help').css('background-color','red');
  this.flag = 1;
}
</script>

</head>
<body> 
  <a id='help' onclick=change() title="please click on Links">Links</a> 
</body>
</html>

je pense qu'il pourrait être utile pour tout le corps grâce.....

0
répondu Raghu 2011-07-23 03:33:26

Ce n'est pas autorisé pour des raisons de sécurité. onbeforeunload est une API de navigateur qui ont des comportements différents sur différents navigateurs.

0
répondu kaiserkiwi 2015-10-05 08:40:53