Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Скрипт подтверждения закрытия страницы (https://javascript.ru/forum/misc/52585-skript-podtverzhdeniya-zakrytiya-stranicy.html)

ToshuK 25.12.2014 13:47

Скрипт подтверждения закрытия страницы
 
Здравствуйте!

Есть скрипт:
<script>
function closeOrNot(e) {
if(!e) e = window.event;
e.cancelBubble = true;
e.returnValue = '';
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
}
}
window.onbeforeunload=closeOrNot;
</script>


Он дает сообщение с просьбой подтвердить закрытие вкладки, но также он выдает это сообщение когда переходишь на другую страницу.

Помогите пожалуйста отключить запрос при переходе страницы... Нужно что-бы спрашивало только когда пользователь закрывает вкладку...

danik.js 25.12.2014 14:59

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

ToshuK 25.12.2014 15:25

Нет, это подтверждение мне нужно. Но оно мешает, оно срабатывает когда пытаешься отправить форму, это очень не нужно...

Malleys 25.12.2014 16:14

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
//код не мой: http://mattweb.ru/moi-raboty/item/107-js-skript-podtverzhdenie-zakrytiya-stranitsy
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);
		$(document).on('keydown', function(event){
			if((event.ctrlKey && event.keyCode == 116) || event.keyCode == 116){
				o.resetUnload();
			}
		});
	}
    this.init();
}

$(function(){
    if(typeof window.obUnloader != 'object')
    {
        window.obUnloader = new Unloader();
    }
})
</script>
<a href="#">Link</a>
<a href="#">Link</a>
<a href="#">Link</a>

Если щёлкать по странице (отправлять форму, F5), то ничего не происходит, а если закрыть, то произойдёт.

ToshuK 25.12.2014 22:22

Нет, не работает. Все равно не дает отправить форму, запрашивает подтверждение...


Часовой пояс GMT +3, время: 07:10.