我遇到了一个任务管理应用程序的问题,偶尔用户会关闭他们的浏览器/标签以及他们输入的信息因为意外关闭浏览器/标签而丢失,导致他们输入的文本丢失(有些人可以花半个小时输入文字。)
所以我必须提供一个解决方案,我有一些想法,但想要最好的输入,或者如果你有更好的解决方案让我听到你。
选项1:
window.onunload
或可能window.onbeforeunload
事件上调用confirm()对话框,首先测试任务日志记录区域中是否包含任何文本但不是空白。如果它不是空白,则调用window.confirm()
并询问用户是否要在不保存日志的情况下关闭选项卡/窗口。我对选项#1的关注是它可能是用户干扰。
选项2:
答案 0 :(得分:6)
window.onbeforeunload事件有点奇怪。如果为其定义处理程序,浏览器将显示关于通过导航离开页面而丢失数据的一般消息,并将从处理函数返回的字符串插入到消息的中间。见这里:
alt text http://img291.imageshack.us/img291/8724/windowonbeforeunload.png
所以我们做的是:当我们知道页面上的内容未保存时,我们设置:
window.onbeforeunload = function(){
return "[SOME CUSTOM MESSAGE FROM THE APP]";
}
一旦用户保存,我们就知道我们不需要向他们展示消息,我们设置:
window.onbeforeunload = null;
它有点干扰,但它比用户意外丢失数据更好。
答案 1 :(得分:2)
我会研究您正在使用的特定Web服务器/语言的AJAX框架。 AJAX允许您在输入时保存表单数据(例如,Google Docs的工作方式)。
答案 2 :(得分:2)
如果用户在提交他们正在做的事情之前足够愚蠢地离开,那么他们就不应该介意他们是否打算做一些显然是愚蠢的事情。
此外,SO使用确认对话框导航,此处的大多数(某些)用户非常聪明。
这是最容易使用的,可能会对用户提供更多帮助。
如果有人写了很长的文字,然后在不提交的情况下关闭浏览器,他们可能会更乐意在那里对问题进行排序,而不是在第二天早上发现他们没有这样做......