web-dev-qa-db-ja.com

CKEDITOR.statusを「ready」で取得する方法は?

私のスクリプトでは、CKEDITORがreadyの状態になるのを待ってから、独自の指示を実行しました。それで、私は CKEDITOR API を調べて、次の条件を書きました:

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

ただし、ステータスがloadedからstatusに変わることはありません。どうやら私は他の状態を見たこともなかった。

より具体的なタスクとして、CKEDITORがcontenteditable = "true"のインライン置換の変更を完了した瞬間を捉えたかったのです。それが、JSコードを先に進めたいときです。

手がかりはありますか?

20
feder

APIが完全に読み込まれたときにコードを実行する場合は、 CKEDITOR.loaded イベント:

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

any新しいインスタンスの準備ができたときにコードを実行する場合は、 CKEDITOR.instanceReady イベント:

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

特定のインスタンスの準備ができたときにコードを実行したい場合は、 CKEDITOR.editor.instanceReady イベント:

CKEDITOR.replace( 'editor', {
    on: {
        instanceReady: function( evt ) {
            // your stuff here
        }
    }
} );
59
oleq

cKEDITORにはreadyステータスはありません。次のようにloadedを使用できます。

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

または、次のようにinstanceReadyを使用します。

CKEDITOR.on('instanceReady', function(evt){ 
   //ready
  //do something
});
9

@Sudhirが指摘したように、直接属性値とinstanceReadyメソッドの間にはわずかな違いがあります。

  • CKEDITORがロードプロセスを完了しただけでなく、後処理全体を完了したときに通知を受ける必要がある場合は、イベントリスナーを使用します。特にHTMLの置換と注入。
2
feder