CKEDITOR:如何在每个SetData

时间:2018-03-06 09:31:22

标签: javascript jquery html ckeditor

我正在创建一个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

(OR)

setData()有没有办法影响contentdom,key事件?

2 个答案:

答案 0 :(得分:0)

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

    HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create("http://website.co.uk/textfile.txt");
        httpRequest.Method = WebRequestMethods.Http.Get;

        HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse();

        using (Stream stream = httpResponse.GetResponseStream())
        using (StreamReader reader = new StreamReader(stream))
        {
            result = reader.ReadToEnd();
        }

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

答案 1 :(得分:0)

最后,我找到了答案。

参考以下问题

CKEDITOR.setData prevents attaching of events with .on function

转到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');
            });
});

而且效果很好。