7

Я хотел бы запустить код js в контроллере angularjs.fire angularjs событие, когда вкладка/браузер закрыт

У меня есть это:

$scope.$on('$destroy', function() { 
      alert('page1'); 
     }); 

Это работает хорошо, когда я навигации от страницы, которая использует этот контроллер, но его не работает, когда я закрываю вкладку/браузер.

Нужно ли использовать какой-либо другой код для запуска js-кода при закрытии вкладки/браузера?

Спасибо заранее, Лациал

ответ

6

Из углового Docs:

$ Destroy();

Удаляет текущую область (и все ее дочерние элементы) с родительской области. Удаление означает, что вызовы в $ digest() не будут больше распространяться на текущую область и ее дочерние элементы. Удаление также подразумевает, что текущая область действия имеет право на сбор мусора.

$ destroy() обычно используется директивами, такими как ngRepeat для , управляющих разворачиванием цикла.

Перед тем, как область будет уничтожена, событие $ destroy передается по этой области. Код приложения может регистрировать обработчик события $ destroy , который даст ему возможность выполнить любую необходимую очистку.

Обратите внимание, что, в AngularJS, есть также уничтожить JQuery событие $, который может использоваться для очистки DOM привязок до того, как элемент удаляется из DOM.

Это просто обрабатывает ситуацию, когда сама область действия уничтожается, что, похоже, не происходит, когда вкладка/браузер закрыта.

Вам придется использовать более низкие методы уровня OnUnload и onbeforeunload события для обработки этой ситуации, вот еще один пост может оказаться полезным:

javascript detect browser close tab/close browser

Смежные вопросы