2013-07-31 2 views
2

Я использую JQuery привязки:Избегайте диалогового окна на beforeunload .. Возможно ли это?

$(window).bind('beforeunload', function() { 
    //code 
    return ""; 
    } 

Если я не даю возвращение "", он отлично работает в Mozilla Firefox, IE8. В нем нет предупреждающего окна с надписью «Вы уверены, что хотите перейти от этой страницы?» Однако в google chrome событие beforeunload не работает без оператора return.

И если я использую return "", он дает поле предупреждения во всех броузерах.

Мне не нужен диалоговое окно, и я хочу, чтобы событие beforeunload работало. Пожалуйста помоги. Пожалуйста, предложите, есть ли другое альтернативное решение. Благодарю.

+0

Вы пробовали 'return true;'? –

+0

А какая ваша часть '// code'? Асинхронные или синхронизирующие методы? –

+0

@ Jeff- Спасибо. Да. Я попробовал вернуться «правда» .. Не повезло. Он показывает «true» в диалоговом окне, за которым следует «Are you sure ..» – Akshaya

ответ

1

onbeforeunload не имеет поведение последовательно через браузер

Вы должны установить все АЯКС вызовы async false внутри функции вы называете в случае beforeunload, а затем попробовать этот безобразный хак:

$(window).on('beforeunload', function (e) { 
    if (e.originalEvent) 
     //Call function for updating omniture site 
    else //this is to provide enough time to all your other requests to be send 
    $.get("", { 
     async: false 
    }); 
    $(this).trigger('beforeunload'); //will create kind of infinite loop 
    //this is an ugly hack because many useless request will be send (but nowhere) 
} 

Test это и дайте мне знать.

+0

совместим с 'e'? Я встречаю ошибки в нескольких браузерах при использовании переменной 'event', не добавляя ее в объявление функции' $ (window) .on ('beforeunload', function (e) {' –

+0

@JeffNoel извините, забыли добавить его –

+0

Нет проблем, сэр, я просто хотел убедиться, что OP не столкнется с другой проблемой через 5 минут (это тоже был открытый вопрос, было бы замечательно, если бы у всех браузеров была бы общая переменная для объекта 'event'). –