如何在CKEditor中收听基本事件?

lis*_*sak 17 html javascript ckeditor

我无法弄清楚如何在ckeditor中收听焦点,click,onKeyUp和其他基本dom事件.在事件摘要中,只有少数关于ckeditor生命周期的事件.ckeditor的"textArea"是一个iframe,它本身就是html,所以不清楚要监听什么dom节点.

lis*_*sak 27

这不是什么大问题,只需执行以下操作,适用于焦点,模糊,点击等.

var ckeditor = CKEDITOR.instances['textArea_id'];
ckeditor.on('focus', fnHandler, context, data, priority);
Run Code Online (Sandbox Code Playgroud)

或jQuery示例:

$(document).ready(function () {
    $('#YOUR_TEXTAREA_ID').ckeditor(ckeditor_config);

    CKEDITOR.instances.YOUR_TEXTAREA_ID.on('blur', fnHandler);
});
Run Code Online (Sandbox Code Playgroud)

我不知道这个支持何时出现,但它肯定适用于3.5.x.

  • 太好了,这个有用......我是个混蛋,我在问之前没试过.我在某处读到它无法完成.谢啦 (3认同)

bpe*_*n76 8

CKEditor实际上在对象中有内置的事件处理.请参阅此文章以获得解释:http: //alfonsoml.blogspot.com/2009/09/ckeditor-events.html

因此,要在CKEditor实例中捕获修改,您可以这样做:

CKEDITOR.on('currentInstance', function(){modified = true;});
Run Code Online (Sandbox Code Playgroud)

此外,似乎版本3内置了一个事件处理器,它更直接:http: //docs.cksource.com/ckeditor_api/symbols/CKEDITOR.ui.dialog.file.html#eventProcessors

CK有点复杂,文档有漏洞,但基于它能够优雅地处理Word生成的HTML,它得到了我的投票作为最好的选择.