Подтвердить что ты не робот

Как получить возвращаемое значение 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;
        }   
    }

Спасибо Алекс.

4b9b3361

Ответ 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