我正在创建一个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
事件?
答案 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文档页面中的文档。
最后我的代码就像这样,
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');
});
});
而且效果很好。