你如何从CKEditor解除绑定事件?

时间:2012-04-30 16:14:49

标签: javascript ckeditor

将某些东西绑定到onChange事件,可以写一些与此类似的东西:

CKEDITOR.on( 'currentInstance', function( ev )
{
       if (CKEDITOR.instances[element_id].checkDirty()) {
          unsaved_changes = true;
       }
});

但是......如何解开那个功能呢?

上面的代码是我在创建编辑器时使用的一些实例化代码的一部分。当我使用ajax更改页面时,会出现问题,并且页面上仍然定义了CKEditor(以及所有其他javascript变量)。因此,onChange事件最终会获得多个绑定......这可能会导致性能问题。

2 个答案:

答案 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
   });

});