JQuery помощь, необходимая для события onbeforeunload - PullRequest
2 голосов
/ 12 января 2011

Я использую событие jquery onbeforeunload в приложении asp.net. Если я напишу событие, как указано ниже, то оно будет работать нормально и отобразить диалоговое окно подтверждения.

var vGlobal = true;
var sMessage = "Leaving the page will lost in unsaved data!";

[Рабочая]

> window.onbeforeunload = function() {
>   if (vGlobal == false) return
> sMessage; }

но это не работает, если я использую метод связывания, как указано ниже

[Не работает]

$(window).bind("beforeunload", function(e) {
    if (vGlobal == false)
        return sMessage;
});

Кто-нибудь подскажет мне, почему он не работает. Есть ли разница между этими двумя методами.

Код на aspx:

<asp:TextBox ID="txtName" runat="server"></asp:TextBox>

ЩЕЛКНИТЕ НА ЭТОЙ ССЫЛКЕ, ЧТОБЫ ВИДЕТЬ ПРИМЕР РАБОТЫ

Ответы [ 3 ]

1 голос
/ 12 января 2011

См. обновленную версию

Необходимо связать все события внутри события готовности документа.

0 голосов
/ 12 января 2011

Нет смысла использовать jQuery для привязки события к окну - все, что вы делаете, это добавляете накладные расходы на то, чтобы jQuery анализировал окно в объект jQuery, который вы даже не используете.

Следовательно, использование:

window.onbeforeunload = handler;

Предпочтительнее использования jQuery для привязки этого события.

Вы все еще можете выполнить привязку внутри секции готовности документа:

$(document).ready(function () {
    window.onbeforeunload = handler;
};
0 голосов
/ 12 января 2011

Помимо того, что vGlobal - это true, а вы проверяете if (vGlobal == false), это пахнет проблемой $ (document) .ready ().

т.е. Вы должны поместить объявление в обработчик document.ready (), как показано здесь:

$(document).ready(function(){
    $(window).bind("beforeunload", function(e) {
        if (vGlobal == false)
            return sMessage;
    });
});
...