Javascript AngularJS在浏览器关闭时删除所有cookie的方法

Javascript AngularJS在浏览器关闭时删除所有cookie的方法,javascript,angularjs,Javascript,Angularjs,我读过其他帖子,其中讨论了其他技术在浏览器关闭时清理浏览器cookie的方法,但没有一篇文章说明如何让AngularJS做到这一点浏览器关闭时,如何触发AngularJS中的cookie删除方法运行? 在AngularJS 1.4.8中,可以使用语法$cookies.remove('keyname')删除cookies。我可以编写一个方法来按名称删除所有cookie。但如何确保浏览器关闭时调用cookie删除方法?如果希望在关闭浏览器选项卡时调用该方法,语法是否有任何不同 持续努力: 根据@

我读过其他帖子,其中讨论了其他技术在浏览器关闭时清理浏览器cookie的方法,但没有一篇文章说明如何让AngularJS做到这一点浏览器关闭时,如何触发AngularJS中的cookie删除方法运行?

在AngularJS 1.4.8中,可以使用语法
$cookies.remove('keyname')
删除cookies。我可以编写一个方法来按名称删除所有cookie。但如何确保浏览器关闭时调用cookie删除方法?如果希望在关闭浏览器选项卡时调用该方法,语法是否有任何不同


持续努力:


根据@User2341963的建议,我在应用程序主模块的
run
方法中添加了cookie删除代码。当我把它放在应用程序其他地方的
logout()
方法中时,同样的代码可以正确运行,但当我在firefox调试器中放置断点并关闭浏览器时,我发现浏览器关闭时,cookie删除代码永远不会运行当浏览器关闭时,我对代码做了哪些具体更改以使AngularJS删除所有cookie?

以下是应用程序主模块的代码,包括
run()
方法:

angular
    .module('hello', [ 'ngRoute', 'auth', 'home', 'secure', 'public1', 'navigation' ])
    .config(

            function($routeProvider, $httpProvider, $locationProvider) {

                $locationProvider.html5Mode(true);

                $routeProvider
                .when('/', {
                    templateUrl : 'js/home/home.html',
                    controller : 'home'
                })//plus other routes
                .otherwise('/');

                $httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

            }
    ).run(['$cookies', '$window', '$log', function($cookies, auth, $window, $log) {

        //other stuff

        $window.onbeforeunload = function() {
            // Clearing all cookies now!
            $cookies.remove("AUTH1"); 
            $cookies.remove("AUTH2");
            $cookies.remove('procStep');
            $cookies.remove('usrname');
            $cookies.remove('exists');
            $cookies.remove('wid');
        };
    }]);

如果您只需要cookies,因为您需要将其发送到后端服务器,那么您可以使用主控制器的事件

使用
$on.$destroy

当控制器即将销毁时调用此事件

另一个选择是使用angularjs


当窗口自动关闭时,会话存储被删除

可能类似于?基本上设置window.onbeforeunload函数使用会话cookies。不用担心干净up@user2341963我应该把它放在哪个控制器里?该应用程序有许多控制器。该应用程序的主模块中只有
module()
.config()
.run(){}
。我会将其放在
run
中,类似于。或者您也可以尝试会话cookies,如charlietfl所示suggested@user2341963我在OP的末尾添加了代码,显示了我如何尝试实现您的建议,并解释了调试器显示在浏览器关闭时没有调用新的cookie清除方法。我还可以尝试什么?我无法验证你的答案,因为我现在正在做其他事情。但是感谢你和+1在这个老问题上帮助别人。其他人请验证这一点,并发表评论说明验证。