1

config.js で有効にできるCKEditor の機能「forcePasteAsPlainText 」のスイッチが必要です。

CKEDITOR.editorConfig = function( config ) {
  config.forcePasteAsPlainText = true;
}


私のウェブサイトの js ファイルから、jquery を使用して forcePasteAsPlainText の値を変更しようとしています。

 if(typeof(CKEDITOR) !== 'undefined') { 
    $('#filterTextButton').click(function () {
        CKEDITOR.config.forcePasteAsPlainText = !CKEDITOR.config.forcePasteAsPlainText;
        if(CKEDITOR.config.forcePasteAsPlainText) {
            $("#filterSwitch").html("OFF");
        }
        else {
            $("#filterSwitch").html("ON");
        }
    });
}

問題は、 CKEDITOR.config.forcePasteAsPlainTextにアクセスできないことです。私は未定義を取得します。

オブジェクトCKEDITOR.configを文字列に変換すると、「pastetext」というパラメーター (forcePasteAsPlainText に属する) を保持するCKEDITOR.config.pluginsという名前のオブジェクトがあることがわかります。しかし、これを読み直したり、設定したりする方法がわかりません。


構成値を変更する 1 つの可能性は、実行時にエディター全体を置き換えてエディター全体を再初期化することだと読みましたが、別の解決策があるはずです!?

PS:私はあなたが以下を使用できることをここで読みましたが、これは私にとってはうまくいきませんでした:

CKEDITOR.on('instanceReady', function(ev) {
   ev.editor._.commands.paste = ev.editor._.commands.pastetext;
});
4

1 に答える 1

1

forcePasteAsPlaintext残念ながら、エディターを再初期化せずに変更することはできません。http://dev.ckeditor.com/browser/CKEditor/trunk/_source/plugins/pastetext/plugin.js#L56で、この構成設定が起動時に一度だけ使用されることを確認できます。

別の解決策は、手動でプレーンテキストとして強制的に貼り付けをオフ/オンにすることです。たとえば、次のようにします。

// Set to false to switch forcing off.
var force = true;

editor.on( 'beforeCommandExec', function ( evt )
{
     var mode = evt.data.commandData;
     if ( force && evt.data.name == 'paste' && mode != 'html' )
     {
         editor.execCommand( 'pastetext' );
         evt.cancel();
     }
}, null, null, 0 );

editor.on( 'beforePaste', function( evt )
{
    if ( force )
        evt.data.mode = 'text';
});
于 2012-08-26T23:53:23.493 に答える