2010-12-31 7 views
1

プラグイン内からエディタを破棄する際の問題は、実際にエディタがなくなってエラーや不安定性が発生する特定のコードが破壊的なプラグインコードの後に​​エディタを使用しようとすることです。CKEditorプラグインによるエディタの閉じ方

私は非同期の両方使用してエディタを閉じ、プラグインの次のコードが出ている

:私が見る問題はそれが可能性が高いだろう危険なsetTimoutコールを使用していることである

var cancelAddCmd = 
{ 
    modes : { wysiwyg:1, source:1 }, 
    async: true, 
    exec : function(editor) 
    { 
    if(confirm('Are you sure you want to cancel editing and discard all content?')) setTimeout(function() { editor.destroy(); }, 100); 
    } 
}; 

:真とのsetTimeoutをコンピュータの実行速度に応じて、結果が混在します。エディタを破棄しても100msが経過していない可能性があります。

プラグイン内からエディタを破棄する適切な方法はありますか? asyncの場合でもtrue:true; setTimeoutエラーは作成されません。

可能であれば、エディターに関連する既存の/それ以上のコードを後で実行しないようにすることが考えられますか?


私は上のようなイベントを、使用して試してみました( 'afterCommandExec'、機能(){editor.destroy();})といくつかの他のイベントが、それは助けていませんがあまり...ありませんエディタがボタンを処理するスタック呼び出しから飛び出したときのようなイベントがあるようです。

さらに、CKEditorインスタンスをより適切に破棄して実行を停止する方法はありませんか?

答えて

1

JSのコード実行をPHPのdie()のように停止させる方法がないため、明らかにsetTimeoutは受け入れられます。

1

正しい場合は、CKEditorを終了したいが、最初に終了する必要のあるプロセスが実行されている場合と実行されていない場合があります。

あなたがすべきことは、CKEditorを使用しようとするときに、まずそれがまだ存在するかどうかを確認することです。それができない場合は、単に関数の実行を停止してください。たとえば、ブール値をfalseに設定して後で破棄するなどして、エディタの破棄を遅らせることもできます。

関連する問題