2011-04-07 31 views
0

我有一个window.onbeforeunload函数,它生成默认消息“你确定要从这个页面导航....”。 如果我们点击“确定”,我们被重定向到一个新的链接,如果我们按下“取消”,我们被重定向回到同一页面。window.onbeforeunload处理确定和取消选项

当我们按下“确定”并离开页面时,我想保存页面中的一些数据。我们如何知道是否按下了“确定”或“取消”,然后进行事件调用并继续执行“确定”/“取消”选项。

回答

-1

您是否使用JavaScript“确认”对话框?

if(confirm("Are you sure you want to navigate away from this page....")) { 
    // OK was pressed 
} else { 
    // Cancel was pressed 
} 
+2

该对话框可能是由浏览器生成的。 https://developer.mozilla.org/en/DOM/window.onbeforeunload – Archimedix 2011-04-07 10:13:00

+0

你不能在'onunloadbefore()'中使用'confirm()'函数。它不会工作。当你返回一个字符串时,浏览器创建一个确认对话框。 – 2015-01-19 12:18:38

0
function leavePage() { 
    //do your thing like saving the data in the session 
    return "Some data entered may be lost."; //a text needs to be returned 
} 

window.onbeforeunload = leavePage; 
+0

我只在按下“ok”时才保存数据,而不是当我按下“cancel”时保存数据。在您的解决方案中,数据将保存在两种情况下。 – prateek 2011-04-07 10:31:37

0

一种可能的方法也许是挂接到onunload事件,以及,如果处理程序被调用,你知道用户选择OK

onbeforeunload中,设置一段时间后调用的超时回调(例如1秒),如果调用该回调,用户可能选择了Cancel

不知道这是多么安全,这是关于种族条件。

+0

这确实奏效,但是,1秒太短,这使得它成为了解用户是否决定取消的绝对可怕的方式。我必须使用5到10秒的超时时间才能确保正确。 – 2015-01-19 13:07:00

相关问题