Просмотр исходного кода

Prevent page transition when the page editting

Sotaro KARASAWA 10 лет назад
Родитель
Сommit
203c6daddc
1 измененных файлов с 34 добавлено и 1 удалено
  1. 34 1
      resource/js/crowi-form.js

+ 34 - 1
resource/js/crowi-form.js

@@ -1,6 +1,9 @@
 $(function() {
-  // preview watch
+
+
   $('[data-toggle="popover"]').popover();
+
+  // preview watch
   var originalContent = $('#form-body').val();
   var prevContent = "";
   var watchTimer = setInterval(function() {
@@ -13,6 +16,36 @@ $(function() {
     }
   }, 500);
 
+  // edit detection
+  var isFormChanged = false;
+  $(window).on('beforeunload', function(e) {
+    if (isFormChanged) {
+      return '編集中の内容があります。内容を破棄してページを移動しますか?';
+    }
+  });
+  $('#form-body').on('keyup change', function(e) {
+    var content = $('#form-body').val();
+    if (originalContent != content) {
+      isFormChanged = true;
+    } else {
+      isFormChanged = false;
+    }
+  });
+  $('#page-form').on('submit', function(e) {
+    // avoid message
+    isFormChanged = false;
+  });
+
+  var watchTimer = setInterval(function() {
+    var content = $('#form-body').val();
+    if (prevContent != content) {
+      var renderer = new Crowi.renderer($('#form-body').val(), $('#preview-body'));
+      renderer.render();
+
+      prevContent = content;
+    }
+  }, 500);
+
   var getCurrentLine = function(event) {
     var $target = $(event.target);