我在这里看到了一些关于我想要达到的目标的问题,并且基于我迄今为止对这些答案的看法。但是有一点轻微的不当行为仍然让我感到恼火。
我所拥有的是一种恢复功能。每当您键入文本时,客户端每45秒向服务器发送一次同步请求。它做了两件事。首先,它将客户在记录上的租约(一次只能编辑一个人)延长60秒。其次,它将目前为止输入的文本发送到服务器,以防服务器崩溃,互联网连接失败等。在这种情况下,用户下次进入我们的应用程序时,会通知用户出现了问题并且有些文本被收回了。想想微软或OpenOffice在崩溃时的恢复!
当然,如果用户自愿离开页面,则不需要通知用户,因此删除了恢复。我通过beforeunload事件做了最后的请求。
在我被要求做出最后的调整之前,一切都很顺利......当你退出编辑器时,你在堆栈溢出的同样行为......确认对话。
这项工作到目前为止,但确认对话框显示两次。这是代码。
事件
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;
}
};
一些问题无关的澄清:
我确实试图将这两件事(恢复删除和用户确认)分离为beforeunload和unload。问题是卸载有点太晚了。即使计划删除,也会通知用户存在恢复。如果您在1秒后刷新页面,则对话框会随着文件被删除而消失。
答案 0 :(得分:0)
你试过这个:
if (local.sync.autosave_textelement) {
window.onunload = exitConfirm;
}