TinyMCE撤消操作不会触发更改事件

Ant*_*ton 3 html javascript tinymce

不确定是否有人曾经使用过你的TinyMCE这个问题.我有一个on change事件处理程序,它改变另一个元素的值.请参阅下面的init代码:

/** Initialize TinyMCE inline editor for headline text */
tinymce.init({
    selector: ".editable.headline",
    paste_as_text: true,
    inline: true,
    toolbar: "undo redo",
    menubar: false,
    verify_html: false,
    font_formats: "MuseoSans = sans-serif;",
    setup: function(ed) {
        var text = '';
        var wordlimit = 200;
        /** handler for keydown event to prevent < 200 character limit */
        ed.on('keydown',function(e) {
            text = ed.getContent().replace(/(< ([^>]+)<)/g, '');
            wordcount = wordlimit - (text.length);
               if(wordcount <= 0 && e.keyCode != 8) {
                    e.preventDefault();
                    e.stopPropagation();
                    return false;
               }
        });
        /** handler for headline text changes */
        ed.on('change',function(e) {
            var content = tinyMCE.get(ed.id).getContent();
            var escapedClassName = ed.id.replace(/(\[|\])/g, '\\$&');
            $('.'+escapedClassName).html(content);

        });
   }
});
Run Code Online (Sandbox Code Playgroud)

当我键入/粘贴文本时,change事件正常触发,但是当我撤消文本更改时,change事件无法正常触发.

任何想法如何强制change撤消和重做事件的事件?

任何帮助将不胜感激!

Rya*_*n V 6

内容不是很容易找到,但TinyMCE网站确实描述了在编辑器生命周期过程中触发事件列表,并解释了这些事件何时被触发.

在您的场景中,只需将重做撤消事件添加到on函数中的函数调用中setup.

setup: function (ed) {
    ed.on('change redo undo',function(e) {
        var content = tinyMCE.get(ed.id).getContent();
        var escapedClassName = ed.id.replace(/(\[|\])/g, '\\$&');
        $('.'+escapedClassName).html(content);
    });
}
Run Code Online (Sandbox Code Playgroud)


Dar*_*rio 5

仅供参考,我在更改链接的 URL 时遇到了同样的问题(它没有触发任何事件),我通过手动触发事件来解决:

 tinymce.activeEditor.fire('change');
Run Code Online (Sandbox Code Playgroud)