Событие закрытия и обновления вкладки браузера javascript

Событие закрытия и обновления вкладки браузера javascript

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

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();
})