web-dev-qa-db-fra.com

JavaScript + onbeforeunload

J'ai une question concernant ma candidature. Chaque fois que l'utilisateur ferme accidentellement la fenêtre du navigateur, je souhaite effectuer quelques opérations de nettoyage auparavant. J'ai utilisé l'événement onunload mais le problème est que cet événement déclenche parfois ou pas. Que devrais-je faire, y a-t-il une meilleure façon de gérer ce type de problème.

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

Voir l'article sur MSDN on onforforload

Il y a aussi une question similaire dans SO

29
rahul

Essayer:

window.onbeforeunload = function() { ...your code... }
6
Davide Ungari

D'après mon expérience, onunload fonctionne différemment selon les navigateurs. Pourquoi n'utilisez-vous pas un autre gestionnaire d'événement appelé onbeforeunload? Ça devrait marcher. Onbeforeunload s'exécutera avant la fermeture de la fenêtre, ce qui devrait résoudre votre problème.

3
Saeros

Cela marche:

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 SharedWorkers et vous devez dire au travailleur qu'il y a un port de moins à gérer. Sinon, vous pourriez actualiser un onglet de navigateur et obtenir un résultat du type "Connexion réussie avec: 10 autres onglets "car l'un des onglets maintient le travailleur en activité, tandis que l'actualisation des autres onglets continue d'envoyer de nouvelles connexions de port à votre baie.

J'espère que cela t'aides.

3
Cody

c’est l’une de mes réponses qui ne donne le onbeforeunload que si l’utilisateur veut fermer la fenêtre et aussi détourner le message du navigateur dans une certaine 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 que cela pourrait être utile pour tout corps merci .....

0
Raghu

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

0
kaiserkiwi