代码之家  ›  专栏  ›  技术社区  ›  mohdajami

即使一个窗口仍然打开,如何强制删除cookie?

  •  2
  • mohdajami  · 技术社区  · 14 年前

    显然,在IE8中,有一个选项“保留收藏夹网站数据”,即使我取消选中它,浏览器仍将保留cookies,直到最后一个窗口关闭。

    问题场景。比如说我登录了somesite.com,然后没有注销,我关闭了窗口,但仍然有另一个IE8窗口打开。在这种情况下,IE8将保留此站点的cookie。因此,如果我再次打开该站点(同一窗口或其他窗口),该站点将不会请求登录信息。

    客户端希望在用户关闭浏览器后立即注销Web应用程序。我可以强制删除IE8正在保存的cookies吗?或者我可以阻止用户关闭窗口,直到我模拟单击注销按钮?

    3 回复  |  直到 14 年前
        1
  •  2
  •   mohdajami    14 年前

    谢谢大家,我已经尝试了很多方法,包括你的方法,但都没有成功。

    我的解决方案如下: 当用户单击x按钮(浏览器关闭)时,一个javascript onunload 将调用函数。此函数模拟单击 logout 按钮。该函数暂停浏览器,直到执行注销。

    代码:

    window.onunload = function() {
        document.getElementById('logoutLink').click();
        windows.setTimeout(doNothingFunction,2000);
    }
    

    一个副作用是,每次用户导航出当前页面时,实际上都会调用这个函数,而不仅仅是在窗口关闭时。
    解决方案,当从一页导航到另一页时,标志即 closingWindow 设置为 false . 但当用户单击X按钮时,标志不会设置为假。

    解决副作用的新功能。

    window.onunload = function() {
        if (closingWindow){
            document.getElementById('logoutLink').click();
            windows.setTimeout(doNothingFunction,2000);
        }
    }
    
        2
  •  1
  •   Aaron Butacov    14 年前

    能否在浏览器的OnUnload事件中设置过期日期为负的cookie?

        3
  •  1
  •   Pavel Strakhov    14 年前

    您可以通过发送异常的Ajax请求来控制窗口的存在。当客户端加载新页面时,您应该验证上次检查请求的时间。