9

I have a login form that is popped up as a separate browser window. Once the API validates that the user is logged in, how do I close that login browser window in AngularJS?

julie-coderiver
  • 1,119
  • 4
  • 14
  • 16

2 Answers2

17

Use $window.close() in $window service.
You can broadcast the result to another controller like this AngularJS – Communicating Between Controllers

dohaivu
  • 2,038
  • 15
  • 17
  • 2
    in angular modal bootstrap. it says :"Scripts may close only the windows that were opened by it." – Silvio Troia May 02 '14 at 09:26
  • Silvio try use this style of injection: .controller('LoginCtrl', function($scope,$window, $modalInstance) { ... } instead of .controller('LoginCtrl', ['$scope', ''$window', function($scope, $window, $modalInstance) { ... }]); – vladymy Sep 25 '15 at 12:21
  • Please have a look on this thread :- http://stackoverflow.com/questions/34367921/close-window-in-angularjs-on-specific-url-angularjs/34368304#34368304 – user2028 Dec 19 '15 at 11:05
  • Hello dohaivu , can you please tell me that is there any way to track url of window, so that i can close the window on that specific url. – user2028 Dec 19 '15 at 11:50
3

This will first prompt the user, asking them whether they want to close their browser:

$window.close()

You'll want to inject the $window service into your controller/service. You can also use the global javascript variable window directly, but I prefer to do it the "angular" way and only use injectables.

Community
  • 1
  • 1
Chris Montgomery
  • 2,344
  • 2
  • 19
  • 30
  • @ChrisMontgomery this function is not working any more . It gives an error in Chrome "$window.close is not a function" – Mateen Kadwaikar May 18 '15 at 14:03
  • newWindow.close() worked for me in Chrome 52 when newWindow was a reference to a new tab/window that I had opened with: var newWindow = $window.open(); – SpaceManGalaxy Sep 06 '16 at 18:57