Javascript 在用户退出页面之前做一些事情
我在这里看到了一些关于我想要实现什么的问题,并根据这些答案得出了我目前的结论。但有一点行为不端仍然让我恼火 我有一种恢复功能。每当您键入文本时,客户端每45秒向服务器发送一次同步请求。它有两个功能。首先,它延长了客户在记录上的租约,每次只有一个人可以再编辑60秒。其次,它会将目前键入的文本发送到服务器,以防服务器崩溃、internet连接失败等。在这种情况下,用户下次进入我们的应用程序时,会通知用户出现了问题,并恢复了一些文本。每当Microsoft或OpenOffice恢复崩溃时,请考虑它们 当然,如果用户自愿离开页面,则不需要通知用户,因此,恢复将被删除。我通过beforeunload事件执行最终请求 一切都很顺利,直到我被要求做最后的调整。。。当您退出编辑器时,堆栈溢出的行为与此相同。。。确认对话 到目前为止,这是可行的,但是确认对话框显示了两次。这是代码 事件Javascript 在用户退出页面之前做一些事情,javascript,javascript-events,Javascript,Javascript Events,我在这里看到了一些关于我想要实现什么的问题,并根据这些答案得出了我目前的结论。但有一点行为不端仍然让我恼火 我有一种恢复功能。每当您键入文本时,客户端每45秒向服务器发送一次同步请求。它有两个功能。首先,它延长了客户在记录上的租约,每次只有一个人可以再编辑60秒。其次,它会将目前键入的文本发送到服务器,以防服务器崩溃、internet连接失败等。在这种情况下,用户下次进入我们的应用程序时,会通知用户出现了问题,并恢复了一些文本。每当Microsoft或OpenOffice恢复崩溃时,请考虑它们
if (local.sync.autosave_textelement) {
window.onbeforeunload = exitConfirm;
}
功能
function exitConfirm() {
var local = Core;
if (confirm('blub?')) {
local.sync.autosave_destroy = true;
sync(false);
return true;
} else {
return false;
}
};
一些与问题无关的澄清:
Core是一个全局对象,它包含了很多在任何地方都使用的变量。
sync发出ajax请求。这些值基于Core.sync对象包含的值。该参数确定调用是异步默认还是同步。
编辑1
我确实尝试将恢复删除和用户确认这两件事分离到beforeunload和unload中。问题是卸载有点太晚了。用户会被告知存在恢复,即使计划删除该恢复。如果您在1秒后刷新页面,该对话框将消失,因为此时文件已被删除。您是否尝试过以下操作:
if (local.sync.autosave_textelement) {
window.onunload = exitConfirm;
}
如果我这样做,对话只出现一次,但取消按钮也不起作用。