angular - 浏览器关闭时如何删除 cookie?使用 angular2-cookies

标签 angular typescript cookies session-cookies

当我关闭浏览器时,我想删除 cookie。我怎样才能做到这一点? 我使用 bibliotek angular2-cookie。

最佳答案

onbeforeunload 事件将允许您在用户离开页面之前运行一些代码。将其与 this answer 中的代码结合起来当用户尝试离开页面时,您可以清除所有 cookie。

window.onbeforeunload = function (e) {
  deleteAllCookies();
}

function deleteAllCookies() {
    var cookies = document.cookie.split(";");

    for (var i = 0; i < cookies.length; i++) {
        var cookie = cookies[i];
        var eqPos = cookie.indexOf("=");
        var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
        document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
    }
}

关于 Angular 2,如果这是一次性的事情,那么将其作为底部片段放入您的 index.html 页面中是完全可以的,因为它与您的 Angular 并不真正相关2 申请。如果您想以 Angular 2 的方式执行此操作,您应该能够将其放入您的 AppComponent 中。

@HostListener('window:onbeforeunload', ['$event'])
onBeforeUnload() {
    this.deleteAllCookies();
}

deleteAllCookies() {
    var cookies = document.cookie.split(";");

    for (var i = 0; i < cookies.length; i++) {
        var cookie = cookies[i];
        var eqPos = cookie.indexOf("=");
        var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
        document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
    }
}

关于angular - 浏览器关闭时如何删除 cookie?使用 angular2-cookies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43145494/

相关文章:

typescript - 想要缓冲一个 Observable 直到另一个 Observable 触发,然后删除缓冲区并使用一个订阅正常触发

jquery - 在 TypeScript 中使用 jQuery $ 前缀

javascript - 使用jQuery或JavaScript在下一页打开相同的div以记住

node.js - 您可以在 RESTFUL 环境中使用 NodeJs Passport Session 吗?

forms - 停止将 "?"添加到 URL

angular - 数字和文本列的垫子排序问题

javascript - 确定属性(property)是来自 parent 还是 child

authentication - IdentityServer4 客户端 - 在 CookieAuthenticationEvents 上刷新访问 token

css - 如何获取最后一个子 *ngFor 组件列表

javascript - 在日期之前分割字符串 (d/m/Y)