TinyMCE只在点击后返回更改的内容,为什么?

时间:2016-01-07 19:58:34

标签: tinymce-4

每当进行更改时,我都希望无缝地从TinyMCE中提取内容。但是在TinyMCE 4.3中似乎唯一的方法是让getContent()返回最近的更改,你需要触发一次点击。

请查看我的小提琴:http://jsfiddle.net/xxfm68ue/1/

tinyMCE.init({
    // General options
    mode : "exact",
    elements : "thisID",

    // Skin options
    skin : "o2k7",
    skin_variant : "silver",

    setup: function(editor) {
      editor.on('change', function(e) {
        alert(e.target.getContent());
        console.log(e.target.getContent());
      });
    }
});

还有其他方法可以自动提取内容吗?

1 个答案:

答案 0 :(得分:0)

值与值不同时,

change事件触发。因此,除非用户已停止输入(即触发blur事件),否则不会触发change事件。

要在用户输入时跟踪更改,您需要捕获keypress个事件

以下代码将事件处理程序附加到 keyup 事件。现在,按下每个键(isCharacterKeyPress()检查不需要的按键)也会触发contentChanged事件。

setup: function(editor) {

     // helper function for keyup event
    function isCharacterKeyPress(evt) {
        if (typeof evt.which == "undefined") {
            // This is IE, which only fires keypress events for printable keys
            return true;
        } else if (typeof evt.which == "number" && evt.which > 0) {
            // In other browsers except old versions of WebKit, evt.which is
            // only greater than zero if the keypress is a printable key.
            // We need to filter out backspace and ctrl/alt/meta key combinations
            return !evt.ctrlKey && !evt.metaKey && !evt.altKey && evt.which != 8;
        }
        return false;
    };

    //function which will act on "change" event
    var contentChanged = function(e) {

      if(e.type == "keyup" && ! isCharacterKeyPress(e) )
      {
        return;
      }
      alert(e.target.innerHTML);          
      console.log(e.target.innerHTML);
    };

//adding eventhandlers
    editor.on('keyup', contentChanged );
    editor.on('change', contentChanged );

}