События закрытия и обновления вкладки браузера с помощью jQuery

События закрытия и обновления вкладки браузера. Предупреждает пользователя о закрытии или обновлении вкладки и дает возможность отменить действие, тем самым позволяет сохранить пользователя на странице.

Данный метод не следует использовать на так называемых сайтах для людей (СДЛ)!
развернуть
function Unloader(){
  var o = this;
  this.unload = function(evt){
      var message = "Вы действительно хотите покинуть страницу?";
      if (typeof evt == "undefined") evt = window.event;
      if (evt) evt.returnValue = message;
      return message;
  }

  this.resetUnload = function()
  {
      $(window).off('beforeunload', o.unload);
  setTimeout(function(){
          $(window).on('beforeunload', o.unload);
      }, 1000);
  }

  this.init = function()
  {
      $(window).on('beforeunload', o.unload);
      $('a').on('click', o.resetUnload);
      $(document).on('submit', 'form', o.resetUnload);
  // F5 и Ctrl+F5, Enter
  $(document).on('keydown', function(event){
    if((event.ctrlKey && event.keyCode == 116) || event.keyCode == 116 || event.keyCode == 13){
      if(confirm('Вы уверены, что хотите обновить страницу')){
        o.resetUnload();
      } else {
        return false;
      }
    }
  });
  }
  this.init();
}

$(function(){
  if(typeof window.obUnloader != 'object')  window.obUnloader = new Unloader();
})
Закрыть