Javascript 区分浏览器刷新和浏览器关闭

Javascript 区分浏览器刷新和浏览器关闭,javascript,jquery,browser,Javascript,Jquery,Browser,我想在页面上的访问者关闭浏览器时设置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

我想在页面上的访问者关闭浏览器时设置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>

window.onbeforeunload=确认退出;
函数confirmExit()
{
return“您试图离开此页面。如果您在未单击“保存”按钮的情况下对字段进行了任何更改,您所做的更改将丢失。是否确实要退出此页面?”;
}
随后

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

我需要设置cookie只有当访问者点击浏览器的交叉按钮,而不是在页面刷新

我遵循了一些链接,如上面的链接和其他链接。从帖子中发现,我们无法区分close和refresh。但这些职位是3-4年前的事了


有没有办法使用JavaScript或Jquery来区分这些事件?

恐怕您没有办法分辨

你唯一能做的就是超负荷点击链接并设置一个标志。但是你永远不知道这是一次刷新还是一次结束…

嗯,那么这个呢:

  • 在卸载之前设置cookie
  • 全局onload,检查cookie的时间戳以查看这是链接还是新会话
  • 如果时间戳差异只有几秒钟,请删除cookie

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


    查看此链接以了解更多详细信息

    否。或者至少我不知道。你所说的浏览器的“交叉”按钮是什么意思?@Gacnt:我的意思是通过单击“交叉”关闭浏览器,还有Ctrl-x、使用地址栏、书签等导航,这是不可能的!为什么曲奇一开始就需要恰好在那个时候设定?机会是有一个更好的方法去做你想做的事情。嗯,是的,这有点脏,但你没有太多的选择。。。你可以把这和我的回答结合起来。@Maresh这里没有争论;真脏。也许有更好的办法解决这个问题,但这是我能想到的唯一解决这个问题的办法;)不,正如我说的,他没有太多选择。很抱歉,你弄错了,这是一个很好的解决方案。没有弄错——你有一点是因为它不够干净。很好:)我认为你应该得到+1;)