web-dev-qa-db-fra.com

'beforeunload' Chrome Issue

J'ai ce simple morceau de code - 

$(window).bind('beforeunload', function(){
    alert("Good Bye")
});

Fonctionne très bien avec Firefox, IE8 mais pas dans Chrome. Est-ce un problème connu ou existe-t-il une alternative à cela?

En fait, ce que j'essaie de faire est de consigner les détails chaque fois que l'utilisateur tente de fermer le navigateur.

function LogTime()
{
    jQuery.ajax({
      type: "POST",
      url: "log.php",
      data: "",
      cache: false,
      success: function(response)
      {
      }
    );
}

$(window).bind('beforeunload', function(){
    LogTime();
});

Cela fonctionne bien dans Firefox, mais pas dans Chrome

15
skos

Renvoyer une chaîne à la place:

$(window).on('beforeunload', function(){
    return "Good bye";
});​
14
Sampson

Essayez ci-dessous:

$(window).on('beforeunload', function(){
  return "Good Bye";
});
6
xdazz

Je devais l'inclure dans un jQuery (document). Déjà pour le faire fonctionner en chrome

<script>
  jQuery(document).ready( 
    function () { 
      jQuery(window).bind('beforeunload',  
        function (e) {  

          [code here]

        } 
      );

    } 
  );
</script>
4
user1703776

Essayez ceci pour tous les navigateurs: -

window.addEventListener("beforeunload", function (e) {

  var confirmationMessage = "\o/";     
  e.returnValue = confirmationMessage;           
  return confirmationMessage;       

});
3

Essaye ça:

function LogTime(){

jQuery.ajax({
  type: "POST",
  url: "log.php",
  data: "",
  cache: false,
  success: function(response){

  }
});

}

 $(window).bind('beforeunload', function(){
     LogTime();
     return "You're leaving?";
 });

Il semble que tant que vous retournez une chaîne pour cet événement à la fin du corps de la fonction, vous pouvez exécuter le code avant cette chaîne.

2
Marcelo Noronha

Si vous devez envoyer des données analytiques juste avant de décharger le document, choisissez navigator.sendBeacon () method à la place de XMLHttpRequest.

la méthode sendBeacon () est conçue pour effectuer un envoi sans blocage d'une petite quantité de données.

Mais vérifiez canIuse report first, car la méthode n’est pas encore supportée globalement.

0
miro