如何在浏览器关闭时调用 Angular 方法



我在AngularJS中相对较新,我被要求修改我们的应用程序,以便当用户关闭浏览器时,我们也将它们从Auth0服务中注销。

我有下面的代码,但我无法让它触发。请帮忙。

$rootScope.$on("$destroy", function() {
    lockService.logout();
});

lockService.logout()包含当用户单击logout按钮时成功注销用户的功能,包括Auth0 signout功能。

我在某处读到我可以使用主控制器的$on.$destroy,但我不确定如何做到这一点。上面的代码实际上在 mainController 函数中,但它仍然不起作用。

这就是我找到答案的地方:https://stackoverflow.com/a/36444134/1168597

您可以将这样的指令添加到您的 body 元素中。

<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()返回 true,我logout用户。

最新更新