我试图将(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键。
答案 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/