5

要将某些内容绑定到 onChange 事件,可以编写类似于以下内容的内容:

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

但是......如何解除该功能的绑定?

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

4

2 回答 2

8

CKEditor的eventInfo文档缺少您可以使用 Firebug 找到的“removeListener”方法。我现在已经添加了它,但它可能需要一天才能发布。

您只需在事件对象上调用该方法,例如:

CKEDITOR.on( 'currentInstance', function( ev )
{
       ev.removeListener();

       if (CKEDITOR.instances[element_id].checkDirty()) {
          unsaved_changes = true;
       }
});
于 2012-04-30T17:31:00.420 回答
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
   });

});

于 2013-09-02T14:46:27.657 回答