【问题标题】:Differentiate browser refresh and browser close区分浏览器刷新和浏览器关闭
【发布时间】:2013-06-10 14:38:22
【问题描述】:

当页面上的访问者关闭浏览器时,我想设置一个 cookie。 我使用了这样的 onbeforeunload 方法

<script language="JavaScript" type="text/javascript">
  window.onbeforeunload = confirmExit;
  function confirmExit()
  {
    return "You have attempted to leave this page.  If you have made any changes to the fields without clicking the Save button, your changes will be lost.  Are you sure you want to exit this page?";
  }
</script>

关注了这个link

但发现即使刷新页面或点击页面上的任何超链接,都会弹出警报。

只有当访问者点击浏览器的十字按钮而不是页面刷新时才需要设置cookie。

我关注了上面的一些链接和另一个here。从帖子中发现我们无法区分关闭和刷新。但这些帖子是 3-4 年前的。

有什么方法可以使用 JavaScript 或 Jquery 区分这些事件吗?

【问题讨论】:

  • 不。或者至少我不知道。
  • 浏览器的十字按钮是什么意思?
  • @Gacnt : 我的意思是点击十字关闭浏览器
  • 那Ctrl-x呢,用地址栏、书签等导航。不可能!
  • 为什么 cookie 需要恰好在那个场合开始设置?有可能有更好的方法来做任何你想做的事情。

标签: javascript jquery browser


【解决方案1】:

恐怕你无从得知。

你唯一能做的就是超载链接点击并设置一个标志。但你永远无法知道它是刷新还是关闭......

【讨论】:

    【解决方案2】:

    嗯,这个呢:

    1. 在卸载前设置 cookie
    2. 全局加载,检查 cookie 的时间戳,看看这是一个链接,还是一个新会话
    3. 如果时间戳相差只有几秒,删除cookie

    【讨论】:

    • 嗯,它有点脏,但你没有太多选择……你可以把它和我的回答结合起来。
    • @Maresh 这里没有参数;确实很脏。可能有更好的方法来解决这个问题,但这是我能想到的question的唯一解决方案;)
    • 不,正如我所说,他别无选择。很抱歉你用错了方法,这是一个很好的解决方案。
    • 没看错——你说的是它不够干净。
    • 那么好 :) 我认为你应该得到 +1 ;)
    【解决方案3】:

    嗯,关闭浏览器时会调用 unload,而当您尝试重新加载时会调用 onload。您可以使用这些属性并设置标志,并相应地触发事件

    Browser close and reload查看此链接了解更多详情

    【讨论】:

      猜你喜欢
      • 2018-09-26
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      • 1970-01-01
      • 2021-12-17
      • 2010-10-08
      • 2014-01-16
      相关资源
      最近更新 更多