21

在我的脚本中,我想等待 CKEDITOR 处于状态ready,然后再让我自己的指令按照他们的方式进行。于是我查阅了CKEDITOR API,写了如下条件:

if(CKEDITOR.status == "ready"){
 //execute my code when ready
}

但是,状态永远不会更改为 from loadedto status。显然我什至没有看到任何其他状态。

更具体的任务,我想抓住 CKEDITOR 完成修改 contenteditable="true" 的内联替换的那一刻。那时我想继续我的 JS 代码。

有什么线索吗?

4

3 回答 3

68

如果要在 API 完全加载时执行代码,请使用CKEDITOR.loaded事件:

CKEDITOR.on( 'loaded', function( evt ) {
    // your stuff here
} );

如果您想在任何新实例准备就绪时执行代码,请使用CKEDITOR.instanceReady事件:

CKEDITOR.on( 'instanceReady', function( evt ) {
    // your stuff here
} );

如果您想在特定实例准备好时执行代码,请使用CKEDITOR.editor.instanceReady事件:

CKEDITOR.replace( 'editor', {
    on: {
        instanceReady: function( evt ) {
            // your stuff here
        }
    }
} );
于 2013-08-27T12:04:24.257 回答
9

CKEDITOR 中没有ready状态,你可以loaded像这样使用:

if ( CKEDITOR.status == 'loaded' ) {
    // The API can now be fully used.
    doSomething();
}

或使用instanceReady,例如:

CKEDITOR.on('instanceReady', function(evt){ 
   //ready
  //do something
});
于 2013-08-27T09:05:25.557 回答
2

正如@Sudhir 指出的那样,直接属性值和 instanceReady 方法之间存在细微差别。

  • 如果您需要在 CKEDITOR 不仅完成其加载过程,而且完成整个后处理时收到通知,请使用事件侦听器。特别是 HTML 替换和注入。
于 2013-08-27T09:20:13.497 回答