Подтвердить что ты не робот

'beforeunload' Проблема Chrome

У меня есть этот простой кусок кода -

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

Отлично работает с Firefox, IE8, но не в Chrome. Это известная проблема или есть ли альтернатива для этого?

Фактически, что я пытаюсь сделать, это регистрировать данные всякий раз, когда пользователь пытается закрыть браузер.

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

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

Это хорошо работает в Firefox, но не в Chrome

4b9b3361

Ответ 1

Вместо этого верните строку:

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

Ответ 2

Попробуйте следующее:

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

Ответ 3

Мне пришлось включить его в jQuery (document).ready, чтобы заставить его работать в chrome

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

          [code here]

        } 
      );

    } 
  );
</script>

Ответ 4

Попробуйте следующее:

function LogTime(){

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

  }
});

}

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

Кажется, что до тех пор, пока вы вернете строку для этого события в конце тела функции, вы можете запустить код перед этой строкой.

Ответ 5

Попробуйте это для всех браузеров: -

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

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

});

Ответ 6

Если вам нужно отправить некоторые аналитические данные непосредственно перед выгрузкой документа, выберите метод navigator.sendBeacon() вместо XMLHttpRequest.

Метод sendBeacon() предназначен для выполнения неблокирующей отправки небольшого количества данных.

Но сначала проверьте отчет canIuse, так как метод еще не поддерживается глобально.