将Cookie设置为在用户离开网页时过期

时间:2013-03-12 15:46:46

标签: javascript cookies

目前,我的cookie设置为0,当用户关闭浏览器时,cookie将过期。有没有办法将cookie设置为在用户离开我的网站时过期?

Cookie.write('cookieName', 'true',{duration:0});

我将'离开我的网站'定义为:完全导航到另一个域,如果他们浏览我的网站,我想要cookie留下来

2 个答案:

答案 0 :(得分:5)

由于您无法预测用户何时离开该页面,您可能需要使onbeforeunload事件上的Cookie失效。

window.onbeforeunload = deleteMyCookie;

我没有添加deleteMyCookie函数的实现 - 但实际上你可以用空字符串覆盖cookie并将到期日期设置为当前时间。

更新 - 您的问题编辑会使此答案无效。在您的情况下,您不知道他们何时离开您的域名 - 因此您必须满足于设置基于时间的到期时间。您可以设置一个相当短的持续时间(比如5分钟),并在每次加载您网站上的页面时移动它 - 因此Cookie只会在他们离开您的域后最多停留5分钟。

答案 1 :(得分:2)

这是不可能的。 cookie标准并非旨在支持该案例。 Cookie是关于HTTP请求和响应(无状态协议中的状态),而不是关于使用浏览器从一个页面进入另一个域的另一个域然后到期的用户。

Expiration 基于时间(或浏览器会话),而不是基于浏览器标签会话,而不是基于用户导航模式等。

如果您的浏览器支持每个互联网域一个进程(可能作为安全功能),然后设置为仅允许每个进程使用Cookie,则此可能无需执行任何其他操作。但是,正如此示例所示,这是基于浏览器的Cookie实现,并且无需具体如何在Javascript中设置cookie。