diff --git a/jquery.are-you-sure.js b/jquery.are-you-sure.js index 3c41e2f..d98d8c1 100644 --- a/jquery.are-you-sure.js +++ b/jquery.are-you-sure.js @@ -151,24 +151,38 @@ var reinitialize = function() { initForm($(this)); - } + }; + + var openConfirmation = function () { + $dirtyForms = $("form").filter('.' + settings.dirtyClass); + if ($dirtyForms.length == 0) { + return; + } + // Prevent multiple prompts - seen on Chrome and IE + if (navigator.userAgent.toLowerCase().match(/msie|chrome/)) { + if (window.aysHasPrompted) { + return; + } + window.aysHasPrompted = true; + window.setTimeout(function() {window.aysHasPrompted = false;}, 900); + } + + return true; + }; if (!settings.silent && !window.aysUnloadSet) { window.aysUnloadSet = true; + $(window).bind('beforeunload', function() { - $dirtyForms = $("form").filter('.' + settings.dirtyClass); - if ($dirtyForms.length == 0) { - return; + if(openConfirmation()) { + return settings.message; } - // Prevent multiple prompts - seen on Chrome and IE - if (navigator.userAgent.toLowerCase().match(/msie|chrome/)) { - if (window.aysHasPrompted) { - return; - } - window.aysHasPrompted = true; - window.setTimeout(function() {window.aysHasPrompted = false;}, 900); + }); + + $(document).bind('page:before-change', function() { + if(openConfirmation()) { + return confirm(settings.message); } - return settings.message; }); } diff --git a/package.json b/package.json index 0b4c38d..bf5cff0 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "bower": "^1.3.1", "grunt": "^0.4.5", "grunt-cli": "^0.1.13", + "karma": "~0.12.0", "grunt-karma": "^0.8.3", "karma-chrome-launcher": "^0.1.4", "karma-jasmine": "^0.2.2",