Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript在浏览器关闭时删除cookie,即使它';s设置为在启动时还原cookie_Javascript_Cookies_Browser_Settings_Session Cookies - Fatal编程技术网

Javascript在浏览器关闭时删除cookie,即使它';s设置为在启动时还原cookie

Javascript在浏览器关闭时删除cookie,即使它';s设置为在启动时还原cookie,javascript,cookies,browser,settings,session-cookies,Javascript,Cookies,Browser,Settings,Session Cookies,我有一个烦人的问题,在互联网上到处都是,但我找不到解决问题的具体办法。这是: 在Chrome中,您可以在浏览器启动时选择“继续我离开的地方”。不幸的是,这意味着所有会话cookie都会在浏览器关闭和恢复或浏览器启动时保留。我需要我的客户端(Javascript)应用程序在浏览器关闭后关闭cookie,但即使我没有设置过期日期,也不会发生这种情况(因此cookie成为会话cookie,即使Chrome说它在浏览会话结束时过期)。问题是,即使我关闭浏览器或重新启动计算机,Chrome也不会终止浏览会

我有一个烦人的问题,在互联网上到处都是,但我找不到解决问题的具体办法。这是:

在Chrome中,您可以在浏览器启动时选择“继续我离开的地方”。不幸的是,这意味着所有会话cookie都会在浏览器关闭和恢复或浏览器启动时保留。我需要我的客户端(Javascript)应用程序在浏览器关闭后关闭cookie,但即使我没有设置过期日期,也不会发生这种情况(因此cookie成为会话cookie,即使Chrome说它在浏览会话结束时过期)。问题是,即使我关闭浏览器或重新启动计算机,Chrome也不会终止浏览会话,因为这是一个该死的启动设置

一种方法是指定未来15分钟(或任何时间)的到期日期。在每个用户操作中,cookie的过期日期都会刷新(重新创建cookie)。如果用户不活动超过15分钟(或任何时间),cookie将消失。我负担不起15分钟的时间让另一个人打开浏览器,发现自己在前一个人的会话中,并且我不能让当前用户在每次上厕所后登录。所以我需要的正是:用户登录,设置cookie并一直保持到浏览器关闭。这是会话cookie的正常行为,但是。。。(上一段)

我还考虑过删除窗口卸载时的cookie()事件,但是如果应用程序在多个选项卡中打开,而用户只关闭其中一个选项卡,该怎么办?我可以每秒轮询一次cookie是否存在,并将cookie始终保存在Javascript变量中,然后如果用户关闭另一个选项卡,我可以每秒恢复一次cookie(如果需要)。这将使cookie保持活动状态,直到关闭应用程序的最后一个选项卡,即浏览器退出。这是我目前最好的解决方案,但我讨厌它

有人知道另一种(更清洁的)方法来实现同样的目标吗?是否有某种方式可以指定Chrome(和/或其他浏览器),我不关心用户的启动设置,我的cookie应该在浏览器关闭时消失

我希望我讲的够有道理:)


谢谢

关键是这是一个用户选项。它不是应用程序选项。您的应用程序完全没有必要尝试解决此问题,应该将此场景视为用户确实在同一会话中。

我知道这一点。在本例中,它实际上是一个应用程序选项,我只想知道如何在浏览器关闭时终止cookie,而不考虑用户的偏好。此外,我不想指示用户更改浏览器启动设置,因为他可能希望其他应用程序(如facebook、gmail等)使用该设置。你可以尝试将cookie的过期日期设置为去年。浏览器将删除您的cookie,因为它已过期。但是你只能对你的页面这样做。安德烈,这在这个评论帖子中是离题的,应该只涉及到罗先生的答案。请在单独的答案中移动您的评论,我将对您的答案进行评论,让您知道为什么它是错误的;)谢谢你的时间,好像你没读我的答案,Mtz。我知道你正在试图绕过用户设置,我是说不要!是 啊祝你好运向(一些)客户解释;)我并不是说你错了,这就是为什么我会接受你的答案,然而有时候客户想要错误的东西,不管你怎么解释。。。