6

CKEditorの画像プラグインでプレビュー要素を非表示にするのに問題があります。画像ソース用の入力フィールドと画像アップロード用のボタン付きのフォームのみを備えた非常にシンプルな画像ダイアログボックスが必要です。そこで、次のカスタム構成設定を使用して不要な要素を削除しました。

CKEDITOR.on( 'dialogDefinition', function( ev )
{
    var dialogName = ev.data.name;
    var dialogDefinition = ev.data.definition;
    if ( dialogName == 'image' ){
        dialogDefinition.removeContents( 'advanced' );
        dialogDefinition.removeContents( 'Link' );
        var infoTab = dialogDefinition.getContents( 'info' );
        infoTab.remove( 'ratioLock' ); 
        infoTab.remove( 'txtHeight' );          
        infoTab.remove( 'txtWidth' );          
        infoTab.remove( 'txtBorder'); 
        infoTab.remove( 'txtHSpace'); 
        infoTab.remove( 'txtVSpace'); 
        infoTab.remove( 'cmbAlign' ); 
        infoTab.remove( 'txtAlt' ); 
    }
}); 

htmlPreview要素を非表示にしようとすると問題が発生します。単に追加するinfoTab.remove( 'htmlPreview ' );と、エラーが発生しますUncaught TypeError: Cannot call method 'setStyle' of null。削除された要素のコード依存関係が原因です。私はたくさんグーグルで検索しましたが、この問題を解決するには2つの方法があるようです-そこに書かれているようにプラグインのソースコードを手動で編集します(

唯一の解決策は、削除したこれらのhtmlオブジェクトを参照するすべてのjavascript関数をimage / dialogs/image.jsから削除することだと思います。

私はこのアドバイスに従おうとしましたが、その後のエラーなしにソースファイルを編集することはできませんでした)または自分で書くことができませんでした。もちろん、いくつかのcssルールを追加して要素を非表示にすることもできますが、それは良い考えではないと思います。この問題は十分に古く、良い解決策があると確信していますが、私はそれを見つけることができませんでした。あなたが私を助けてくれることを願っています。前もって感謝します。

PS私はCKEditorの最新バージョン-3.6.4を持っています。

4

2 に答える 2

9

画像ダイアログの記述方法が原因で、ファイルの残りの部分をさらに調整してすべての参照も削除しない限り、プレビューを簡単に削除することはできません。

ここで説明されているように、構成プラグインを使用する (または同様のコードを記述する) ことをお勧めします。

config.hideDialogFields="image:info:htmlPreview";

私のブログからプラグインをダウンロードできます。CKEditor 4 に切り替えた場合は、ビルドに追加してください: http://ckeditor.com/addon/confighelper

于 2013-04-16T18:44:03.050 に答える
0

あなたは試すことができますinfoTab.remove( 'htmlPreview' );

于 2012-09-18T17:59:43.500 に答える