0

サイトでCKeditorを使用してユーザー入力を取得しています。ユーザーがテキストを太字にしたり、イタリックにしたり、コンテンツをコピーして貼り付ける機能など、ある種のフォーマットを実行できるようにしたいので、CKEditorを使用しています。取得した入力は、いくつかのレポートの作成にも使用されます。

現在、一部のユーザーは異なるフォント [Arial、Calibiri などを使用] を使用しており、好みのフォント サイズを使用しているという問題に直面しています。

レポートを作成するとき、サイトから入力されたテキストについて、少なくとも 2 つの点、つまりフォントとフォント サイズ [Arial とサイズ 10 に制限したい] に関して一貫性を確保したいと考えています。

フォントとフォントサイズを選択するためのCKEditor機能を無効にすることを考えていました。しかし、ユーザーがコンテンツをコピーして貼り付けている場合でも、フォントとサイズの問題が残ります。試してみることができるオプションを探しています。

私の頭に浮かんだ1つのオプションは、コンテンツを貼り付けた後、CKEditorを実行して、フォントとサイズの仕様に従ってコンテンツを置き換えるオプションを使用できるかどうかです。もしそうなら、どうすればこれを行うことができますか?

私が考えている別のオプションは、ユーザーが入力したフィールドから入力を取得し、仕様に従ってCKEditorを使用して値を設定する別のフィールドをフォームに含めることです。

どちらの場合も、同じフィールドまたは別のフィールドを更新するには、ユーザーがフィールドでのアクションをいつ完了したかを知る必要があります。助言がありますか?

ありがとう

4

1 に答える 1

1

これを行う最初の方法は、単にイベントで呼び出しselectAllremoveFormatコマンドを実行することgetDataです:

CKEDITOR.replace( 'editor1', {
    on: {
        getData: function() {
            // Save the old selection
            var ranges = this.getSelection().getRanges();

            this.execCommand( 'selectAll' );
            this.execCommand( 'removeFormat' );

            // Restore the selection
            this.getSelection().selectRanges( ranges );
        }
    }
});

paste希望があれば、イベントでも行うことができます。removeFormat選択内容が破棄される可能性があり、エディタはそれを復元できないことに注意してください。

これは汚い方法ですが、削除したいタグ属性を簡単に変更できます。これを使用することもできます:config.forcePasteAsPlainText = true;貼り付けられたコンテンツを「dehtmllize」します。

ただし、これを穏やかに行うには、データ プロセッサについて少し読む必要があります。


穏やかなアプローチは次のとおりです。

CKEDITOR.replace( 'editor1', {
    on: {
        instanceReady: function() {
            this.dataProcessor.htmlFilter.addRules({
                attributes: {
                    style: function( attribute ) {
                        return false;
                    },
                    width: function( attribute ) {
                        return false;
                    },
                    height: function( attribute ) {
                        return false;
                    },
                    // ...
                    // You can modify (remove) any attribute you want
                }
            });
        }
    }
});

最終的には、style属性を正​​規表現でフィルタリングして、気に入らない部分を削除することもできます。

于 2012-09-26T14:42:55.307 に答える