4

我需要在浏览器关闭并且已经放在 window.onbeforeunload 上时删除 cookie,如下所示:

 window.onbeforeunload = function(){
        location.replace("admin.jsp?action=logout");
        deleteCookie('Times');
 }

使用 setCookie 如下:

 function setCookie(name,value,days) {
         var expires;
         if (days) {
                  var date = new Date();
                  date.setTime(date.getTime()+(days*24*60*60*1000));
                  expires = "; expires="+date.toGMTString();
         }
         else {
                  expires = "";
              }
                  document.cookie = name+"="+value+expires+"; path=/";
     }

当涉及到 deleteCookie 时,它​​包含以下内容:

    setCookie(name,value,-1);

问题是每当我重新启动浏览器时,它总是会出现 window.onbeforeunload 以便触发 deleteCookie。每当用户登录时,我实际上都需要它来重置我的倒计时计时器,因为如果计数器没有结束并且用户有时会在它结束之前关闭窗口/选项卡,cookie 永远不会被删除。所以,我的想法是要么在用户登录时重置计数器,要么在用户注销时简单地删除 cookie。但是,我仍然无法弄清楚如何编码。谁能帮我吗?不过,代码片段将不胜感激。CMIIW

4

2 回答 2

6

未在 cookie 上指定 Expires 值将导致 cookie 在浏览器会话结束时即用户关闭浏览器时被删除。像:

Set-Cookie: made_write_conn=1295214458; Path=/; Domain=.foo.com

made_write_conn made_write_conncookie 没有过期日期,因此它是一个会话 cookie。用户关闭浏览器后将被删除。尝试做:

setCookie('Times',value, '');
于 2012-12-14T03:49:59.187 回答
0

关闭浏览器时,您无法更改页面的位置。

在服务器上,您应该使用会话结束事件来清理帐户。

于 2012-12-14T03:44:09.427 回答