Fixed page exit confirmation
This commit is contained in:
parent
ac312ccb49
commit
d72c6c5d6e
2 changed files with 21 additions and 0 deletions
|
@ -3,6 +3,7 @@ var App = App || {};
|
||||||
App.Router = function(pathJs, _, jQuery, util, appState, presenterManager) {
|
App.Router = function(pathJs, _, jQuery, util, appState, presenterManager) {
|
||||||
|
|
||||||
var root = '#/';
|
var root = '#/';
|
||||||
|
var previousLocation = window.location.href;
|
||||||
|
|
||||||
injectRoutes();
|
injectRoutes();
|
||||||
|
|
||||||
|
@ -57,6 +58,18 @@ App.Router = function(pathJs, _, jQuery, util, appState, presenterManager) {
|
||||||
{previousRoute: pathJs.routes.previous});
|
{previousRoute: pathJs.routes.previous});
|
||||||
|
|
||||||
presenterManager.switchContentPresenter( presenterName, finalParams);
|
presenterManager.switchContentPresenter( presenterName, finalParams);
|
||||||
|
}).enter(function(e) {
|
||||||
|
if (util.isExitConfirmationEnabled()) {
|
||||||
|
if (window.location.href !== previousLocation) {
|
||||||
|
if (!window.confirm('Are you sure you want to leave this page? Data will be lost.')) {
|
||||||
|
window.location.href = previousLocation;
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
util.disableExitConfirmation();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
previousLocation = window.location.href;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,17 +3,24 @@ var App = App || {};
|
||||||
App.Util = function(_, jQuery, promise) {
|
App.Util = function(_, jQuery, promise) {
|
||||||
|
|
||||||
var templateCache = {};
|
var templateCache = {};
|
||||||
|
var exitConfirmationEnabled = false;
|
||||||
|
|
||||||
function enableExitConfirmation() {
|
function enableExitConfirmation() {
|
||||||
|
exitConfirmationEnabled = true;
|
||||||
jQuery(window).bind('beforeunload', function(e) {
|
jQuery(window).bind('beforeunload', function(e) {
|
||||||
return 'There are unsaved changes.';
|
return 'There are unsaved changes.';
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function disableExitConfirmation() {
|
function disableExitConfirmation() {
|
||||||
|
exitConfirmationEnabled = false;
|
||||||
jQuery(window).unbind('beforeunload');
|
jQuery(window).unbind('beforeunload');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isExitConfirmationEnabled() {
|
||||||
|
return exitConfirmationEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
function parseComplexRouteArgs(args) {
|
function parseComplexRouteArgs(args) {
|
||||||
var result = {};
|
var result = {};
|
||||||
args = (args || '').split(/;/);
|
args = (args || '').split(/;/);
|
||||||
|
@ -148,6 +155,7 @@ App.Util = function(_, jQuery, promise) {
|
||||||
formatRelativeTime: formatRelativeTime,
|
formatRelativeTime: formatRelativeTime,
|
||||||
enableExitConfirmation: enableExitConfirmation,
|
enableExitConfirmation: enableExitConfirmation,
|
||||||
disableExitConfirmation: disableExitConfirmation,
|
disableExitConfirmation: disableExitConfirmation,
|
||||||
|
isExitConfirmationEnabled: isExitConfirmationEnabled,
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue