2013-04-08 41 views
5

我需要警告用户他们在离开页面时会丢失信息。这很容易使用onbeforeunload事件完成。我的问题是,如果用户决定离开,我想采取一些行动。使用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; 
}); 

我不知道如果我想要在这里做的,甚至有可能......周围的Googling没有给我任何迹象显示这种或那种方式另一个,所以我转向我最喜欢的专家组!

任何想法我怎么能做到这一点?

谢谢!

+0

重复:http://stackoverflow.com/questions/276660/how-can-i -over-on-onbeforeunload-dialog-and-replace-it-with-my-own – hereandnow78 2013-04-08 15:33:16

+0

请正确阅读我的问题。我不是问如何做一个“离开页面确认”,而是根据“离开页面确认”的结果如何做一些动作...... – Gabriel 2013-04-08 15:36:15

+0

你的问题在该线程中有所回答。你想做的事是不可能的,因为安全的原因... – hereandnow78 2013-04-08 15:43:01

回答

10

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

beforeunload事件没有完成的方式是当用户点击“留在页面”按钮而不是“离开页面”(如果该对话框被呈现给他们,就像在你的代码中那样)。

所以,如果你知道,他们不离开页面的可能性总是会呈现给他们,为unload事件而执行的唯一方法是,如果(用户)没有阻止beforeunload事件。

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

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

+1

这对我来说非常合适!谢谢! – Gabriel 2013-04-08 16:16:34

+1

宏伟的伊恩救了我的一天,那是onbeforeunload和onunload之间的纯粹差异。 – 2014-04-17 10:15:05

相关问题