将某些东西绑定到onChange事件,可以写一些与此类似的东西:
CKEDITOR.on( 'currentInstance', function( ev )
{
if (CKEDITOR.instances[element_id].checkDirty()) {
unsaved_changes = true;
}
});
但是......如何解开那个功能呢?
上面的代码是我在创建编辑器时使用的一些实例化代码的一部分。当我使用ajax更改页面时,会出现问题,并且页面上仍然定义了CKEditor(以及所有其他javascript变量)。因此,onChange事件最终会获得多个绑定......这可能会导致性能问题。
答案 0 :(得分:8)
CKEditor的eventInfo文档缺少使用Firebug可以找到的“removeListener”方法。我现在已经添加了它,但它可能需要一天才能发布。
您只需要在事件对象上调用该方法,例如:
CKEDITOR.on( 'currentInstance', function( ev )
{
ev.removeListener();
if (CKEDITOR.instances[element_id].checkDirty()) {
unsaved_changes = true;
}
});
答案 1 :(得分:1)
window.ckeditor=CKEDITOR.replace('ckeditor'); //create instance
var focus_action =function (){
console.log('focus');
}; /*callback must have own name*/
ckeditor.on('instanceReady',function (){
var _this=this;
this.document.on('keyup',function (){
console.log(ckeditor.checkDirty());
});
this.document.on('focus',focus_action); //bind our callback
this.document.on('blur',function (){
console.log('blur');
_this.document.removeListener('focus',focus_action); //remove our callback
//_this.document.removeAllListeners(); //remove all listeners
});
});