我已閱讀其他帖子,討論其他技術在瀏覽器關閉時清理瀏覽器cookies的方式,但沒有一個顯示如何讓AngularJS執行此操作。 如何在瀏覽器關閉時觸發AngularJS中的Cookie移除方法運行?AngularJS在瀏覽器關閉時刪除所有cookies的方法
在AngularJS 1.4.8中,可以使用語法$cookies.remove('keyname')
刪除cookie。我可以寫一個方法來刪除所有的cookie名稱。但是,如何確保在瀏覽器關閉時調用cookie刪除方法?如果我想要在關閉瀏覽器選項卡時調用方法,語法是否有所不同?
正在進行的努力:
作爲每@ User2341963的建議下,我的應用程序的主模塊中加入餅乾移除代碼到run
方法。當我將它放在應用程序中的其他位置的logout()
方法中時,同樣的確切代碼可以正確運行,但是當我在Firefox調試器中放置斷點並關閉瀏覽器時,我發現在瀏覽器關閉時從不運行Cookie刪除代碼。 在瀏覽器關閉的情況下,我對代碼做了哪些具體的更改以使Cookie全部被AngularJS刪除?
下面是應用程序的主要模塊的代碼,包括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');
};
}]);
可能像[如何觸發窗口的功能關閉使用angularjs(http://stackoverflow.com /問題/ 30345446 /如何到觸發一個功能上用窗使用-angularjs特寫)?基本上設置window.onbeforeunload功能 – user2718281
使用會話cookie。無需擔心清理 – charlietfl
@ user2341963我應該將哪個控制器放入?該應用程序有很多控制器。該應用程序的主要模塊只有'module()','.config()'和'.run(){}'。 – CodeMed