Javascript 重新启动浏览器时,不会删除没有过期的cookie

Javascript 重新启动浏览器时,不会删除没有过期的cookie,javascript,Javascript,我使用此函数在客户端中写入cookie: createCookie: function(name, value, days) { var expires = ""; if (days) { var date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); expires = "; expires=" + date.toGMTStri

我使用此函数在客户端中写入cookie:

createCookie: function(name, value, days) {
    var expires = "";
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        expires = "; expires=" + date.toGMTString();
    }
    document.cookie = name + "=" + value + expires + "; path=/";
}
我这样设置了一个cookie:

createCookie("foo", "1"); // no expiration time
我希望浏览器在关闭时删除这个cookie,事实上,大多数时候它都是这样工作的。但我注意到,在firefox中,情况并非如此,即使重启后cookie仍然存在

我想这取决于一些设置,这些设置允许用户在浏览器关闭时冻结浏览器的状态,以便在重新启动浏览器时,您使用的所有选项卡仍然存在并正在启动

有人经历过这样的事情吗

您可以推荐任何解决方法吗


干杯

我还没有试图准确地解决这个问题,我确实有一个建议应该有效,但有一点需要注意;它不仅会将会话约束到浏览器会话,还会约束到特定选项卡

您可以做的是将window.name设置为随机数,然后将该标识符附加到该会话的cookie名称中。读取Cookie时,仅使用其标识符与窗口名称中的标识符匹配的Cookie。之所以选择window.name,是因为它在刷新和导航过程中保持不变

这不是最好的解决方案,但它会抵消你所看到的问题


此外,如果您需要在window.name中存储的不仅仅是该标识符,您可以对对象进行json_编码,然后对其进行base64_编码以存储更多属性。

到底是什么问题?@aurel.g没有过期时间的cookie是会话cookie,因此它不应该在会话之间可用。