Как получить возвращаемое значение onbeforeunload
Я показываю предупреждающее сообщение, если пользователь пытается закрыть окно без сохранения формы.
window.onbeforeunload = askConfirm;
function askConfirm()
{
// needToConfirm is set to true if any changes are there in the form
if (needToConfirm)
{
return "Your unsaved data will be lost.";
}
}
function call_this_if_user_clicks_on_cancel()
{
// Bla bla bla
// After this user should remain on the same page.
}
Теперь я хочу вызвать другую функцию, когда пользователь нажимает Okay
. Остальная функциональность должна оставаться такой же.
Итак, как я могу собрать возвращаемое значение onbeforeunload
и вызвать другую функцию?
РЕШЕНИЕ:
needToConfirm = false;
window.onbeforeunload = askConfirm;
window.onunload = unloadPage;
isDelete = true;
function unloadPage()
{
if(isDelete)
{
call_this_if_user_clicks_on_cancel()
}
}
function askConfirm()
{
alert("onbeforeunload");
if (needToConfirm)
{
// Message to be displayed in Warning.
return "Your data will be lost.";
}
else
{
isDelete = false;
}
}
Спасибо Алекс.
Ответы
Ответ 1
Я не уверен; Но я думал, что вы не можете назвать другую функцию, как превентивную меру браузером, чтобы она не попала в ловушку от выхода из страницы.
Я думаю, что только браузер знает, возвращает ли он true/false, чтобы определить, не выгружена ли страница (или нет).
Ранее unbeforeunload был нестандартным (из IE4, но поддерживался другими браузерами)
Вот документы Mozilla https://developer.mozilla.org/en/DOM/window.onbeforeunload
И Microsoft docs: http://msdn.microsoft.com/en-us/library/ms536907(VS.85).aspx
Однако это выглядит так, как думал BeforeUnloadEvent в предложении HTML5.
В этом документе подробно описываются шаги, которые происходят при выгрузке документа (интересное чтение):
http://www.w3.org/TR/html5/history.html#beforeunloadevent
В качестве обходного пути:
Вы можете собрать необходимую информацию из "события разгрузки", если событие unload НЕ вызывается после onbeforeunload, вы можете предположить, что пользователь решил остаться на вашей странице.
https://developer.mozilla.org/en/DOM/window.onunload