diff --git a/javascript/src/QfqForm.js b/javascript/src/QfqForm.js index 4a36138c2f89ec0f1e0ab7d5c065f7958c388c4f..3a151bf0c8d25690cc4883bfca76ecd83112ec55 100644 --- a/javascript/src/QfqForm.js +++ b/javascript/src/QfqForm.js @@ -733,4 +733,11 @@ var QfqNS = QfqNS || {}; return $('#' + this.formId + ' input[name=s]').val(); }; + /** + * @public + */ + n.QfqForm.prototype.isFormChanged = function () { + return this.form.formChanged; + }; + })(QfqNS); \ No newline at end of file diff --git a/javascript/src/QfqPage.js b/javascript/src/QfqPage.js index 66dc8295dbee132a9cb05617be2291938964e996..0e02b2f4f6dff263fc08784fac57bd130ae800e4 100644 --- a/javascript/src/QfqPage.js +++ b/javascript/src/QfqPage.js @@ -53,12 +53,26 @@ var QfqNS = QfqNS || {}; this.settings.fileDeleteUrl); this.qfqForm.setBsTabs(this.bsTabs); this.qfqForm.on('qfqform.destroyed', this.destroyFormHandler.bind(this)); + + window.addEventListener("beforeunload", this.beforeUnloadHandler.bind(this)); } catch (e) { n.Log.error(e.message); this.qfqForm = null; } }; + /** + * @private + */ + n.QfqPage.prototype.beforeUnloadHandler = function (event) { + var message = "\0/"; + if (this.qfqForm.isFormChanged()) { + + event.returnValue = message; + return message; + } + }; + /** * @private */ diff --git a/mockup/personmock.html b/mockup/personmock.html index 7760e67946b0b62bbb28ce980723df5f4ac34918..eb3910d32e20062f2e9765e7140ce391e9002ab2 100644 --- a/mockup/personmock.html +++ b/mockup/personmock.html @@ -793,6 +793,7 @@ </div> </form> + <a href="www.google.ch">away</a> </div> <script src="../js/jquery.min.js"></script> @@ -1051,6 +1052,7 @@ }); QfqNS.Log.level = 0; + }); </script> </body>