-
-
Save 981746/3b6050052ffafef0b4df to your computer and use it in GitHub Desktop.
| <!DOCTYPE html> | |
| <html data-ng-app="TestApp"> | |
| <head> | |
| <script src="http://code.angularjs.org/1.2.9/angular.js"></script> | |
| <script> | |
| angular.module('TestApp', []) | |
| .factory('beforeUnload', function ($rootScope, $window) { | |
| // Events are broadcast outside the Scope Lifecycle | |
| $window.onbeforeunload = function (e) { | |
| var confirmation = {}; | |
| var event = $rootScope.$broadcast('onBeforeUnload', confirmation); | |
| if (event.defaultPrevented) { | |
| return confirmation.message; | |
| } | |
| }; | |
| $window.onunload = function () { | |
| $rootScope.$broadcast('onUnload'); | |
| }; | |
| return {}; | |
| }) | |
| .run(function (beforeUnload) { | |
| // Must invoke the service at least once | |
| }); | |
| function TestController($scope) { | |
| $scope.$on('onBeforeUnload', function (e, confirmation) { | |
| confirmation.message = "All data willl be lost."; | |
| e.preventDefault(); | |
| }); | |
| $scope.$on('onUnload', function (e) { | |
| console.log('leaving page'); // Use 'Preserve Log' option in Console | |
| }); | |
| } | |
| </script> | |
| </head> | |
| <body data-ng-controller="TestController"> | |
| This is a test | |
| <a href="http://www.google.com/">Google</a> | |
| </body> | |
| </html> |
Not working with angular https://code.angularjs.org/1.4.14/angular.js
Thanks for this solution, solves my problem. I use angular 1.6.3 and it work perfectly.
@anil826, Some browsers have removed custom messages.
Thanks - this works perfectly
👍
Hi,
It worked perfectly except in one scenario. If I run the code and without doing any interaction with the window I click on the close button, the dialog box does not appear. I have to do some interaction in the window (like clicking the blank area) for the dialog to appear the next time I want to close the window.
Any thoughts on how to solve this issue?
@MijaelWatts Maybe try to get the focus on a page element (via the .focus() method) when you load your page or emulate a click on an hidden field ?
Excelent! thanks 🍻
Can I rely on this for API call?
Above code is not working for latest version of chrome I need to put custom message in prompt but I showing default message