如何在浏览器关闭时调用 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.type1,这意味着页面是 refresh-ed。然后我要做的是,如果它没有刷新并且我的 lockService.isAuthenticated() returns 为真,我 logout 用户。