5

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

在微型 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 的任何其他事件处理程序之前捕获删除键。

4

1 回答 1

10

好的,经过 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 事件委托给插件,我还必须防止它们被编辑器/文本区域过早触发:

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/

于 2013-06-28T19:10:34.383 回答