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

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

$(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

 Joseph21 мая 2012 г., 08:46
Диалоги заблокированы дляonbeforeunload в Chrome, потому что Chrome решил сделать это.
 Jonathan Marzullo30 янв. 2018 г., 18:40
Команда Google Chromium настоятельно рекомендует вамн использовать диалоги JavaScript alert(), confirm(), а такжеprompt()) поскольку они утверждают, что наносят вред пользователям, поэтому, вероятно, поэтому они блокируют его без предварительного вмешательства пользователя: Developers.google.com / веб / обновление / 2017/03 / Диалоги-политика Они рекомендуют использовать API уведомлений: Developer.mozilla.org / EN-US / Docs / Web / API / Notifications_API

Ответы на вопрос(6)

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

$(window).on('beforeunload', function(){
    return "Good bye";
});​
 Sampson21 мая 2012 г., 09:23
@ Sachyn Я не знаю решения. Я только что попытался отправить несколько асинхронных данных, но Chrome заблокировал трафи
 skos21 мая 2012 г., 09:27
Правильно. Даже я не могу заставить это работать в Chrome. Спасибо за ваши усилия, хотя.
 Shiv Kumar Ganesh24 июл. 2018 г., 11:52
Потому что Chrome и Firefox требуют некоторых действий пользователя, чтобы заметить предварительную загрузку.
 skos21 мая 2012 г., 09:16
Я редактировал свой вопрос, пожалуйста, проверьте, возможно ли решение

Попробуйте ниже:

$(window).on('beforeunload', function(){
  return "Good Bye";
});
 Abhi05 нояб. 2016 г., 09:30
Я не понимаю. где используется «До свидания».
 user106328709 окт. 2017 г., 05:01
По состоянию на 09.10.17, версия Chrome 61.0.3163.100 (официальная сборка) (32-разрядная версия), похоже, что это не так: /

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

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

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

});

чтобы он работал в chrome

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

          [code here]

        } 
      );

    } 
  );
</script>

о перед выгрузкой документа, выберите Navigator.sendBeacon () метод вместо XMLHttpRequest.

етод @sendBeacon () предназначен для неблокирующей отправки небольшого объема данны

Но проверьcanIuse report во-первых, поскольку метод еще не поддерживается во всем мире.

Попробуй это

function LogTime(){

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

  }
});

}

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

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

Ваш ответ на вопрос