21

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

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

ただし、ステータスが からloadedに変わることはありません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 に答える