Форма jQuery, onBeforeUnload и ASP.Net - PullRequest
       14

Форма jQuery, onBeforeUnload и ASP.Net

3 голосов
/ 11 сентября 2011

У меня есть следующее решение для предотвращения случайного ухода пользователей с моей страницы регистрации:

var warning = true;

function CheckExit() {
    if (warning) {
        return "Changes done. Remember to save, blah blah.";
    }
}
window.onbeforeunload = CheckExit;

addToPostBack = function (func) {
    var old__doPostBack = __doPostBack;
    if (typeof __doPostBack != 'function') {
        __doPostBack = func;
    } else {
        __doPostBack = function (t, a) {
            if (func(t, a)) old__doPostBack(t, a);
        }
    }
};

$(document).ready(function () {

    $('#aspnetForm').submit(function () {
        warning = false;
        return true;
    });

    addToPostBack(function (t, a) {
        warning = false;
        return true;
    }); 

});

Большая часть этого кода относится к разным вопросам здесь, в StackOverflow, и прекрасно работает на моей локальной странице отладки; все элементы управления ASP.Net (кнопки ссылок, кнопки) можно нажимать без предупреждения, но как только пользователь пытается закрыть окно или уйти, появляется предупреждение.

Однако при развертывании на моем сервере появляется предупреждение, когда я щелкаю и элементы управления ASP.Net (и я действительно не хочу предупреждать пользователя о том, что его изменения не сохраняются, когда он нажимает кнопку «Сохранить») , Теперь есть разница между моей локальной страницей отладки и сервером: сервер использует другую MasterPage с некоторыми рекламными объявлениями, но после отладки с помощью Firebug (см. Следующий абзац) я не вижу, как это должно иметь значение.

Я попытался запустить разные части кода Javascript с помощью Firebug, чтобы убедиться, что все загружено правильно (я предположил, что раздел, содержащий $ ('# aspnetForm'), не загружался, так как это, кажется, разница), но улучшения нет вообще. Предупреждение по-прежнему появляется при каждом нажатии на ссылку или кнопку.

Моя главная проблема, я думаю, в том, что я не до конца понимаю, что делает функция addToPostBack, и поэтому я не могу правильно отладить ее.

Есть здесь кто-нибудь, кто знает, что может быть не так?

Ответы [ 2 ]

1 голос
/ 29 сентября 2011

Это предположение, но у вас нет обычного антиконфликтного устройства, которое работает (function ($) {code here}) (jQuery); поэтому что-то может противоречить определению jQuery '$', что остановит выполнение исключения, которое ваш код делает, когда кто-то отправляет сообщение обратно.

0 голосов
/ 13 октября 2011

Я согласен с Джеймсом.В большинстве случаев такой тип конфликта возникает.Я предложу с noConflict ().Счастливого кодирования.

...