使用TinyMCE的Google Docs样式自动保存

amb*_*ide 5 php ajax jquery tinymce google-docs

我有一个使用在LAMP系统上运行的TinyMCE编辑器的表单.我希望创建一个类似于Google文档的自动保存功能.我想到了两个场景,但两者都会在服务器上产生开销.

  1. 在keyup上发布Ajax请求
  2. 每60秒发布一次Ajax请求

显然,第一点是不可行的.任何人都可以建议更好地解决第二点问题吗?

编辑1

好的,所以第三种选择可能是Thariama的回答和我的第二点的结合.

3)如果有显着变化,例如10个字符或更多,则每60秒发布一次Ajax请求

对此的任何进展都将非常感激.

编辑2

好的我已根据第3点制作了我的解决方案的原型.如果有人感兴趣,我的代码流程如下:

我正在使用JQuery.我有一个带有TinyMCE的textarea表单和一个隐藏字段来存储击键次数.

tinyMCE.init({
  ...
  // Callback for counting keystrokes in TinyMCE
  handle_event_callback : "keyCount"
});

$(function() {
  autoSaveContent();
});

// Callback function - Get count, increment it and then set it
function keyCount(e) {
  if(e.type == "keypress") {
    var count = parseInt($("#keyCount").val());
    count++;
    $("#keyCount").val(count);
  }
}

// Autosave every 10s if there have been over 30 keystrokes
function autoSaveContent() {
  var keyCount = parseInt($("#keyCount").val());
  if(keyCount > 30) {
    tinyMCE.triggerSave();
    var formData = $("#programmedItineraryForm").serialize();
    $.post("/path/to/save.php", formData, function(data,textStatus) {
      if(data.success) {
        $("#keyCount").val(0);
      }
    });
  }
  setTimeout('autoSaveContent()',10000);
}
Run Code Online (Sandbox Code Playgroud)

Tha*_*ama 2

嗯,有很多选择。第1点确实有点太贵了。我认为根据编辑器中输入的新字符数发送请求是个好主意。例如,每 5-10 个新字符发送一个请求。您可以增加 onKeyDown 或 onKeyUp 计数器,并在发送请求时重置该计数器。