我有一个window.onbeforeunload函数,它生成默认消息“你确定要从这个页面导航....”。 如果我们点击“确定”,我们被重定向到一个新的链接,如果我们按下“取消”,我们被重定向回到同一页面。window.onbeforeunload处理确定和取消选项
当我们按下“确定”并离开页面时,我想保存页面中的一些数据。我们如何知道是否按下了“确定”或“取消”,然后进行事件调用并继续执行“确定”/“取消”选项。
我有一个window.onbeforeunload函数,它生成默认消息“你确定要从这个页面导航....”。 如果我们点击“确定”,我们被重定向到一个新的链接,如果我们按下“取消”,我们被重定向回到同一页面。window.onbeforeunload处理确定和取消选项
当我们按下“确定”并离开页面时,我想保存页面中的一些数据。我们如何知道是否按下了“确定”或“取消”,然后进行事件调用并继续执行“确定”/“取消”选项。
您是否使用JavaScript“确认”对话框?
if(confirm("Are you sure you want to navigate away from this page....")) {
// OK was pressed
} else {
// Cancel was pressed
}
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;
我只在按下“ok”时才保存数据,而不是当我按下“cancel”时保存数据。在您的解决方案中,数据将保存在两种情况下。 – prateek 2011-04-07 10:31:37
一种可能的方法也许是挂接到onunload
事件,以及,如果处理程序被调用,你知道用户选择OK
。
在onbeforeunload
中,设置一段时间后调用的超时回调(例如1秒),如果调用该回调,用户可能选择了Cancel
。
不知道这是多么安全,这是关于种族条件。
这确实奏效,但是,1秒太短,这使得它成为了解用户是否决定取消的绝对可怕的方式。我必须使用5到10秒的超时时间才能确保正确。 – 2015-01-19 13:07:00
该对话框可能是由浏览器生成的。 https://developer.mozilla.org/en/DOM/window.onbeforeunload – Archimedix 2011-04-07 10:13:00
你不能在'onunloadbefore()'中使用'confirm()'函数。它不会工作。当你返回一个字符串时,浏览器创建一个确认对话框。 – 2015-01-19 12:18:38