From dc7c41b32c1c4a4f339a637be7974b7c08078941 Mon Sep 17 00:00:00 2001 From: Viras- Date: Sat, 24 Oct 2015 18:22:00 +0200 Subject: [PATCH] adding default cordova backbutton handling --- cordova-js-src/platform.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/cordova-js-src/platform.js b/cordova-js-src/platform.js index 216b14b1..fc668f07 100644 --- a/cordova-js-src/platform.js +++ b/cordova-js-src/platform.js @@ -59,6 +59,30 @@ module.exports = { cordova.fireDocumentEvent('activated', platform.activationContext, true); }; + // preserve reference to original backclick implementation + var defaultBackButtonHandler = app.onbackclick; + // create document event handler for backbutton + var backButtonChannel = cordova.addDocumentEventHandler('backbutton'); + + // inject new back button handler + app.onbackclick = function (e) { + // check if listeners are registered, if yes use custom backbutton event + // NOTE: backbutton handlers have to throw an exception in order to exit the app + if (backButtonChannel.numHandlers >= 1) { + try { + cordova.fireDocumentEvent('backbutton', e, true); + return true; + } + catch (e) { + return false; + } + } + // if not listeners are active, use default implementation (backwards compatibility) + else { + return defaultBackButtonHandler.apply(app, arguments); + } + }; + app.addEventListener("checkpoint", checkpointHandler); app.addEventListener("activated", activationHandler, false); Windows.UI.WebUI.WebUIApplication.addEventListener("resuming", resumingHandler, false);