CKEDITOR:如何在每个 SetData 之后设置“contentdom”

CKEDITOR : How do set `contentdom` after every SetData

我正在创建一个 CKEditor 插件,但我遇到了一些问题。

我的插件型号:

 CKEDITOR.plugins.add("myplugin", {
    //for lang,require,icon
    init:function(a){
       editor.on('contentDom', function () {
            editor.document.on('key', function (evt) {
                console.log("Key Pressed"); 
            });
       }); 
    }
 });

工作正常。但是,我的问题是 setData

我在用户单击文件时设置数据。

setData 之后,key 事件不工作。

有没有办法在插件文件中的每个 setData() 之后将侦听器附加到文档?

CKEditor 中使用的其他类型的方法是什么,例如 init

(或)

有什么方法可以setData()而不影响contentdom,key事件吗?

请将侦听器添加到编辑器,而不是文档。这样当文档被删除时它不会被删除:

editor.on( 'instanceReady', function( e ) {
    editor.on( 'key', function( e ) { 
        console.log('test');
    });
});

请看:https://docs.ckeditor.com/ckeditor4/latest/api/CKEDITOR_editor.html#event-key

终于找到答案了

参考以下问题

CKEDITOR.setData 防止附加带有 .on 函数的事件

然后转到 CKEditor 文档页面中的文档。

#contentDomUnload

最后我的代码是这样的,

editor.on('contentDom', function () {
            var editable = editor.editable();
            editable.attachListener(editable, 'keyup', function (evt)  {
                  console.log('for key events');
            });

            editable.attachListener(editable, 'mousedown', function (evt) {
                  console.log('for click events');
            });
});

而且效果很好。