Как вызвать функцию закрытия окна с помощью angularjs
Мне нужно выполнить функцию, когда пользователь закрывает приложение, но необходимо учитывать следующие моменты:
- Мне нужно выполнить функцию из одного
service
, затем...
- ... функция, основанная на открытом виде на основе javascript, вряд ли будет
полезно здесь
- Поскольку я использую маршруты, привязка с привязкой
onLocationChangeSuccess
бесполезно, а также
поэтому это решение не будет работать: qaru.site/info/102805/...
Поскольку это будет срабатывать каждый раз при изменении местоположения, но мне нужно только один триггер, когда вкладка/окно закрывается.
Ответы
Ответ 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>
Ответ 2
Я думаю, вы можете использовать $window для привязки собственного события javascript к закрытию окна
например.
app.controller('myCtrl', ['$window', '$myService', function ($window, $myService) {
$window.onbeforeunload = function (evt) {
$myService.onclose();
}
}]);
Ответ 3
Эта работа?
onbeforeunload, а не только триггер, когда закрывается окно, также происходит, когда пользователь обновляет окно (ctrl + f5). И если вы используете $window.onunload, функция никогда не будет выполнена, потому что окно будет закрыто перед выполнением кода функции.