一尘不染

如何使用angularjs在关闭窗口时触发函数

angularjs

当用户关闭应用程序时,我需要执行一个函数,但是需要考虑以下几点:

  • 我需要执行一个功能service,然后…
  • …超出范围的基于纯JavaScript的函数在这里不太有用
  • 当我使用路由时,作用域onLocationChangeSuccess绑定也无济于事

因此此解决方案将无法正常工作:https :
//stackoverflow.com/a/18355715/773595

因为这会在每次位置更改时触发,但是我只需要在关闭选项卡/窗口时触发一次。


阅读 441

收藏
2020-07-04

共1个答案

一尘不染

您可以在控制器/指令中注册onbeforeunload,然后就可以访问作用域。如果需要服务,我会将其注册到angular.run生命周期中。

angular.module('app', [])

  .controller('exitController', function($scope, $window) {

    $scope.onExit = function() {

      return ('bye bye');

    };



   $window.onbeforeunload =  $scope.onExit;

  });


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="app" ng-controller="exitController">

  <a href="http://www.disney.com">Leave page</a>

</div>
2020-07-04