我有一个像这样的ckeditor插件:
CKEDITOR.plugins.add('testplugin', {
init: function (editor) {
editor.on('contentDom', function (e) {
var body = editor.document.getBody();
body.on('mouseup', function (e) {
alert('run!!!!');
});
});
});
});
它在CKEDITOR版本3(iframe基础)中完美运作
但是当我升级到CKEDITOR第4版(最新的 - 可信赖的基础)时,
当我销毁然后重新启动ckeditor时,所有事件都会多次触发。
(使用CKEDITOR.instants.testEditor.destroy()
和CKEDITOR.replace('testEditor',options);
)
我使用:removeAllListeners( )
删除所有对正文的事件侦听器,但没有更改。
我如何完成销毁CKEDITOR 4 +所有事件监听器?
答案 0 :(得分:4)
您似乎使用内联实例,因此editor.document
为CKEDITOR.document
。这意味着每个实例共享相同的var body = editor.document.getBody();
。
为了避免重复事件作为“死亡编辑”附加的剩余事件,您应该聆听editor#destroy
并在每一个上致电event#removeListener
,或使用editable#attachListener
自动执行此操作为你工作(jsFiddle):
editor.on( 'contentDom', function() {
var body = editor.document.getBody();
// This listener will be deactivated once editor dies.
editor.editable().attachListener( body, 'mouseup', function() {
console.log( 'run!!!!' );
} );
} );