jQuery:尝试刷新或关闭浏览器时提示用户

时间:2013-05-15 08:49:28

标签: javascript jquery html5

场景:我有一个网络应用程序,我将让用户1在表单(#div1)中设置一些值并将其显示给下一个用户(在用户1之后没有关闭浏览器来到浏览器的用户) )(显示屏将显示在#div2中,而#div1将被隐藏)。但是,如果用户2刷新浏览器,则所有值都将消失。

问题:如何在用户尝试刷新浏览器时提醒用户?网络应用将位于Midori,网络服务器位于CherryPy

或者有没有办法保存会话而不管刷新?怎么样?

4 个答案:

答案 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)
}
相关问题