【发布时间】:2017-05-21 05:58:08
【问题描述】:
我已经阅读了其他帖子,这些帖子讨论了其他技术在浏览器关闭时清理浏览器 cookie 的方式,但没有一个显示如何让 AngularJS 做到这一点。 如何在 AngularJS 中触发 cookie 清除方法在浏览器关闭时运行?
在 AngularJS 1.4.8 中,可以使用语法 $cookies.remove('keyname') 删除 cookie。我可以编写一个按名称删除所有 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');
};
}]);
【问题讨论】:
-
可能类似于how to trigger a function on window close using angularjs?基本上设置了window.onbeforeunload函数
-
使用会话 cookie。不用担心清理
-
@user2341963 我应该把它放在哪个控制器中?该应用程序有许多控制器。该应用程序的主模块中只有
module()、.config()和.run(){}。 -
我会把它放在
run中,类似于this。或者您可以按照建议尝试使用 charlietfl 的会话 cookie -
@user2341963 我在 OP 末尾添加了代码,显示了我如何尝试实施您的建议,并解释说调试器显示当浏览器关闭时没有调用新的 cookie 清除方法。我还能尝试什么?
标签: javascript angularjs