4

我有一个任务管理应用程序的问题,有时用户会关闭他们的浏览器/选项卡,并且他们键入的信息会因为他们不小心关闭浏览器/选项卡而消失,导致他们输入的文本丢失(有些可以花半小时输入文本)。

所以我必须提供一个解决方案,我有几个想法,但想要最好的输入,或者如果你有更好的解决方案,请告诉我。

选项1:

  • 在这个window.onunload或可能的window.onbeforeunload事件上调用一个 confirm() 对话框并首先测试任务记录区域是否有任何文本并且不是空白的。如果它不为空,则调用window.confirm()并询问用户是否要关闭选项卡/窗口而不保存日志。

我对选项 #1 的担忧是它可能会侵入用户。

选项 2:

  • 在同一事件中,不要调用任何 confirm(),而是将任务日志区域中的文本强制保存在 cookie 中。然后可能会提供一个按钮,尝试从同一页面上的 cookie 中恢复任何已保存的任务信息,因此点击该按钮将使其解析 cookie 并检索信息。
4

3 回答 3

6

window.onbeforeunload 事件有点奇怪。如果您为它定义一个处理程序,浏览器将通过离开页面显示有关丢失数据的通用消息,并将您从处理程序函数返回的字符串插入到消息的中间。看这里:

替代文字 http://img291.imageshack.us/img291/8724/windowonbeforeunload.png

所以我们要做的是:当我们知道页面上的某些内容未保存时,我们设置:

window.onbeforeunload = function(){
 return "[SOME CUSTOM MESSAGE FROM THE APP]";
}

一旦用户保存,并且我们知道我们不需要向他们显示消息,我们设置:

window.onbeforeunload = null;

这有点侵入性,但总比您的用户意外丢失数据要好。

于 2009-10-19T15:58:08.720 回答
2

我会针对您正在使用的特定 Web 服务器/语言研究 AJAX 框架。AJAX 将允许您在输入时保存表单数据(例如,这就是 Google Docs 的工作方式)。

于 2009-10-19T15:51:00.903 回答
2

如果用户在提交他们一直在做的事情之前足够愚蠢地离开,那么他们不应该介意闯入询问他们是否打算做一些明显愚蠢的事情。

此外,SO 在导航时使用确认对话框,并且这里的大多数(某些)用户非常聪明。

这是最容易使用的,并且可能会为用户提供更多帮助。

如果有人写了很长一段文字,然后没有提交就关闭了浏览器,他们可能更乐意在那里对问题进行排序,然后而不是第二天早上发现他们没有这样做......

于 2009-10-19T16:01:50.053 回答