У меня есть следующее решение для предотвращения случайного ухода пользователей с моей страницы регистрации:
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, и поэтому я не могу правильно отладить ее.
Есть здесь кто-нибудь, кто знает, что может быть не так?