有没有人知道是否有相当于TinyMCE 3.5.8 Editor.onEvent(...)在TinyMCE 4.0b1

时间:2013-06-28 17:07:02

标签: tinymce tinymce-4

我试图将(https://github.com/NYTimes/ice)移植到TinyMCE 4的插件需要在MCE编辑器处理之前访问一个按键事件,并在3.5.8中使用onEvent(...)但是需要在tinymce 4中迁移到更像on('event')的东西,但是没有明显的选择。

在微小的MCE 3.5.8中,我有

            ed.onEvent.add(function(ed, e) {
                return changeEditor.handleEvent(e);
            });

但我需要更像

的东西
                ed.on('event', function(e) {
                    return changeEditor.handleEvent(e);
                });

然而,ed.on('event',...)似乎不存在于tinymce 4中。

它需要能够在keydown,keyup和keypress的任何其他事件处理程序之前捕获delete键。

1 个答案:

答案 0 :(得分:9)

好的,经过2个工作日试图让这个工作起来后,我想出了这个特定问题的问题。

对于初学者而言,在tinymce 4中没有与onEvent(...)等效的内容。但是插件无论如何都不需要访问每个事件。

如果要移植任何使用onEvent()方法的tinymce插件,则需要识别插件尝试处理的事件,并为每个需要处理的事件显式设置事件处理程序:

                ed.on('mousedown', function(e) {
                    return changeEditor.handleEvent(e);
                });

                ed.on('keyup', function(e) {
                    return changeEditor.handleEvent(e);
                });

                ed.on('keydown', function(e) {
                    return changeEditor.handleEvent(e);
                });

                ed.on('keypress', function(e) {
                    return changeEditor.handleEvent(e);
                });

在我的情况下,我不仅需要将mousedown,mouseup,keyup,keydown和keypress事件委托给插件我还必须防止它们被编辑器/ textarea过早地解雇:

ed.on('keydown', function(e) {
     // prevent the delete key and backspace keys from firing twice
     if(e.keyCode == 46 || e.keyCode==8)
        e.preventDefault();
});

如果遇到类似的问题,请记住这一点。

哦,我在我的github上添加了这个ICE插件的一个分支:https://github.com/catsgotmytongue/ice/