7

我需要警告用户离开页面时他们会丢失信息。这可以使用 onbeforeunload 事件轻松完成。我的问题是,如果用户决定离开,我想采取一些行动。

这是一个示例(我正在使用 jquery,因为它无论如何都已加载):

$(window).on('beforeunload', function(e){
    return "Do you really want to leave?";
});

我想做的是这样的(这个代码不起作用,我知道,这只是一个例子来说明我正在尝试做的事情):

$(window).on('beforeunload', function(e){
    // Ask for user confirmation
    var bUserAnswer = confirm("Do you really want to leave?");

    if(bUserAnswer)
    {
        // Do something...
    }
    else
    {
        // Do something else...
    }
    // Close everything if the user decides to leave...
    return bUserAnswer;
});

我不知道我在这里尝试做的事情是否可能......谷歌搜索并没有给我任何指示,所以我转向我最喜欢的专家组!

知道我该怎么做吗?

谢谢!

4

2 回答 2

14

离开页面时,事件beforeunloadunload按此顺序执行。当然,如果beforeunload事件没有完成,事件就不会完成unload

事件未完成的方式beforeunload是用户单击“留在页面”按钮而不是“离开页面”(如果向他们显示该对话框,就像在您的代码中一样)。

因此,如果您知道他们不离开页面的可能性将始终呈现给他们,那么unload执行事件的唯一方法beforeunload是(由用户)不阻止该事件。

因此,当用户实际选择离开页面时,您应该能够将您想要执行的任何代码放入unload事件中。

至于知道用户是否决定留在页面上,我不知道如何抓住它:)

于 2013-04-08T16:14:20.823 回答
0
window.addEventListener('beforeunload', this.handleUnload);
window.addEventListener("unload", function(event) {
    //calling ajax or do something here
});

handleUnload (e) {
     var message = "your custom message here";
     (e || window.event).returnValue = message; //Gecko + IE
    return message;
}
于 2021-07-05T14:06:43.313 回答