如何收集onbeforeunload的返回值

2023-11-23

如果用户尝试关闭窗口而不保存表单,我将显示一条警告消息。

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;
        }   
    }

我不确定;但我认为你不能调用另一个函数,作为浏览器的预防措施,这样它就不会因离开页面而被困。

我认为只有浏览器知道它是否返回 true / false 来确定页面是否已卸载(或未卸载)。

以前unbeforeunload是非标准的(从IE4开始,但其他浏览器支持) 这是 Mozilla 文档https://developer.mozilla.org/en/DOM/window.onbeforeunload和微软文档:http://msdn.microsoft.com/en-us/library/ms536907(VS.85).aspx

然而,BeforeUnloadEvent 看起来像是在 HTML5 提案中。 本文档详细给出了卸载文档时发生的步骤(读起来很有趣):

http://www.w3.org/TR/html5/history.html#beforeunloadevent


作为解决方法: 您可以从“unload 事件”中收集所需的信息,如果在 onbeforeunload 之后未调用 unload 事件,您可以假设用户选择留在您的页面上。

https://developer.mozilla.org/en/DOM/window.onunload

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何收集onbeforeunload的返回值 的相关文章

随机推荐