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>