如何在浏览器关闭时调用 Angular 方法
How to call an Angular method when browser closes
我是 AngularJS 的新手,有人要求我修改我们的应用程序,以便在用户关闭浏览器时,我们也将他们从 Auth0 服务中注销。
我有下面的代码,但我无法启动它。请帮忙。
$rootScope.$on("$destroy", function() {
lockService.logout();
});
lockService.logout()
包含在用户单击 logout
按钮时成功注销用户的功能,包括 Auth0
signout
功能。
我在某处读到我可以使用主控制器的 $on.$destroy
,但我不知道该怎么做。上面的代码实际上在 mainController
函数中,但它仍然不起作用。
这是我找到答案的地方:
您可以将这样的指令添加到您的正文元素中。
<body body-unload></body>
app.directive('bodyUnload', [
function () {
return {
restrict: 'A',
replace: false,
link: function (scope, element) {
function cleanupApp(){
// do cleanup here
}
element[0].onbeforeunload = function() {
cleanupApp();
};
}
};
}
]);
我发现了一种更简洁、更有效的方法。
$rootScope.$on('$locationChangeStart', function () {
if (!($window.performance.navigation.type === 1) && lockService.isAuthenticated()) {
$rootScope.logout();
}
});
所以这里如果 window.performance.navigation.type
是 1
,这意味着页面是 refresh
-ed。然后我要做的是,如果它没有刷新并且我的 lockService.isAuthenticated()
returns 为真,我 logout
用户。
我是 AngularJS 的新手,有人要求我修改我们的应用程序,以便在用户关闭浏览器时,我们也将他们从 Auth0 服务中注销。
我有下面的代码,但我无法启动它。请帮忙。
$rootScope.$on("$destroy", function() {
lockService.logout();
});
lockService.logout()
包含在用户单击 logout
按钮时成功注销用户的功能,包括 Auth0
signout
功能。
我在某处读到我可以使用主控制器的 $on.$destroy
,但我不知道该怎么做。上面的代码实际上在 mainController
函数中,但它仍然不起作用。
这是我找到答案的地方:
您可以将这样的指令添加到您的正文元素中。
<body body-unload></body>
app.directive('bodyUnload', [
function () {
return {
restrict: 'A',
replace: false,
link: function (scope, element) {
function cleanupApp(){
// do cleanup here
}
element[0].onbeforeunload = function() {
cleanupApp();
};
}
};
}
]);
我发现了一种更简洁、更有效的方法。
$rootScope.$on('$locationChangeStart', function () {
if (!($window.performance.navigation.type === 1) && lockService.isAuthenticated()) {
$rootScope.logout();
}
});
所以这里如果 window.performance.navigation.type
是 1
,这意味着页面是 refresh
-ed。然后我要做的是,如果它没有刷新并且我的 lockService.isAuthenticated()
returns 为真,我 logout
用户。