场景:我有一个网络应用程序,我将让用户1在表单(#div1
)中设置一些值并将其显示给下一个用户(在用户1之后没有关闭浏览器来到浏览器的用户) )(显示屏将显示在#div2
中,而#div1
将被隐藏)。但是,如果用户2刷新浏览器,则所有值都将消失。
问题:如何在用户尝试刷新浏览器时提醒用户?网络应用将位于Midori
,网络服务器位于CherryPy
。
或者有没有办法保存会话而不管刷新?怎么样?
答案 0 :(得分:6)
您在寻找
吗?window.onbeforeunload = function(){
return "Are you sure you want to close the window?";
}
答案 1 :(得分:2)
https://developer.mozilla.org/en-US/docs/DOM/window.onbeforeunload
您需要使用onbeforeunload
。基本上,如果您的应用程序处于“忙碌”状态,您将设置处理程序,该处理程序将询问用户他/她是否真的想要离开;)
答案 2 :(得分:1)
你问了两个问题。
首先,“如何在用户尝试刷新浏览器时提醒用户?”:
在beforeunload
函数中,包含以下内容(显然您需要任何文本):
confirm('If you refresh the page your data will be lost');
这将使用“确定”和“取消”按钮创建警报。如果用户按下“确定”,页面将继续其正在执行的操作(在您的情况下,刷新);否则,它返回false。
对于第二个问题,“或者有没有办法保存会话而不管刷新?”:是的。
编辑:您现在问了第三个问题,“如何?”但这实际上超出了StackOverflow的问答格式。快速回答是有几种方法,包括cookie和DOM存储以及使用后端。尝试一下,如果遇到问题,请提出具体问题并提供帮助。
答案 3 :(得分:0)
以下内容应该有效:
window.addEventListener("beforeunload", function (e) {
var message = "Are you sure you want to leave?";
(e || window.event).returnValue = message;
return message;
});
对于问题的第二部分,有几种选择。可能最简单的是localStorage:
// after form updated
if (typeof Storage !== 'undefined') {
localStorage.formData = formData // where formData is a string containing all the data from the form
}
// on page load (e.g. after refresh)
if (typeof Storage !== 'undefined') {
populateForm(localStorage.formData); // where populateForm is a function that can take the string you saved and does what you want with it (sorry, I didn't really understand that part of the question)
}