2013-08-08 4 views
0

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

Обнаружив это question, я адаптировал один из ответов следующим образом. Обратите внимание, что я не использую возврат:

function setConfirmUnload(on) { 
    window.onbeforeunload = (on) ? unloadMessage : null; 
} 
function unloadMessage() { 
    alert('Gonna save now'); 
    setTimeout(validate_submit,500); 
} 

Это происходит только тогда, когда пользователь заполняет какое-либо значение в форме. Если изменения значений элементов, я использую

setConfirmUnload(true); 

Результат в FF23: когда пользователь щелкает где-нибудь, чтобы оставить страницу, предупреждение показано, validate_submit() выполняется на «OK», появится новая страница - НО сейчас появляется предупреждение, и пользователь возвращается на исходную страницу в «ОК». Зачем? Может ли кто-нибудь подтвердить это поведение?

+0

Я думаю, что вы хотите 'setTimeout (validate_submit, 500);' - отметить '()' не существует – Ian

+0

Спасибо, я только что редактировал мой исходный вопрос соответственно. – user2317194

ответ

0

Метод window.onbeforeunload вызывает появление окна подтверждения, содержащего любое сообщение, возвращаемое назначенной ему функцией. Вы можете помещать предупреждения и другие вещи в этот метод, но он всегда будет заканчиваться сообщением подтверждения. Если ваша функция ничего не возвращает, она все равно даст сообщение (определенное браузером), в котором говорится: «Вы уверены, что хотите покинуть эту страницу» или что-то в этом направлении.

+0

Это верно для моей ситуации только тогда, когда я использую return ''; - при использовании return null; показывает тот же результат, что и выше (т. е. нет окна сообщений). – user2317194

Смежные вопросы