Javascript на закрытии окна

В настоящее время я обнаруживаю, что пользователь моего сайта закрывает окно/вкладку или меняет URL-адрес.

Я использую следующий код, который отлично работает:

var validNavigation = false;

function endSession() {
  // Browser or broswer tab is closed
  // Do sth here ...
  alert("bye");

}

function wireUpEvents() {

  window.onbeforeunload = function() {
      if (!validNavigation) {
         endSession();
      }
  }

  // Attach the event keypress to exclude the F5 refresh
  $(document).bind('keypress', function(e) {
    if (e.keyCode == 116){
      validNavigation = true;
    }
  });

  // Attach the event click for all links in the page
  $("a").bind("click", function() {
    validNavigation = true;
  });

  // Attach the event submit for all forms in the page
  $("form").bind("submit", function() {
    validNavigation = true;
  });

  // Attach the event click for all inputs in the page
  $("input[type=submit]").bind("click", function() {
    validNavigation = true;
  });

}


$(document).ready(function() {
  wireUpEvents(); 
});

Моя проблема заключается в том, что я хочу изменить событие из предупреждения на оверлей. Я установил скрытый div overlay и заменил предупреждение в приведенном выше коде на:

$('.overlay').css('display','block');

Теперь это больше не работает, так как в нем нет ничего, чтобы заставить пользователя оставаться на странице. (пользователю не нужно нажимать кнопку в пределах предупреждения)

Любые предложения о том, как я могу обойти это?

Приветствия, Дэн

Ответ 1

Событие закрытия окна запускается как самое последнее событие. Поэтому после него никакие другие события не запускаются.

Вы можете использовать событие beforeunload с JQuery, чтобы показать наложение на экране.

Следующая ссылка может помочь: ссылка