CKEditorを無効にして毎回取得するにはどうすればよいですか
、私はそれらをしたくないとき? jQueryアダプターでCKEditorを使用しています。
タグ。
いくつかの研究の後、私はこの問題にいくらかの光を当てるかもしれません-残念ながら、すぐに使える解決策はありません。
CKEditorでは、ノーブレークスペースが発生する可能性のある4つの方法があります
空のブロックの自動充填 。これは設定で無効にできます:
config.fillEmptyBlocks = false;
TABキーを押したときの自動挿入 。これは設定で無効にできます:
config.tabSpaces = 0;
二重スペースをSPACE + NBSPに変換します。 これはブラウザの動作であるため、CKEditorチームによって修正されません 。サーバー側で修正するか、クライアント側のJavaScript onunloadで修正することができます。たぶん、このPHPはスタートです:
preg_replace('/\s \s/ig', ' ', $text);
コピーして貼り付けます。 TF-8 no-break space またはダブルスペースを貼り付けると、CKEditorは自動的に変換します。ここで私が見る唯一の解決策は、上記のように正規表現を行うことです。 config.forcePasteAsPlainText = true;
は役に立ちません。
概要:すべての改行なしスペースを取り除くには、ユーザー入力をクリーンにする追加の関数を作成する必要があります。
コメントや提案は大歓迎です! (ckeditor 3.6.4を使用しています)
改行しないスペース文字が発生する別の方法があります。文の最後にスペースを入力するだけです。
CKEditorは、ラテンおよびギリシャ語のエンティティとともに基本的なHTMLエンティティをエスケープします。
これを防ぐには、これらの構成オプションを追加します(構成ファイルに追加することもできます)。
CKEDITOR.on( 'instanceCreated', function( event ) {
editor.on( 'configLoaded', function() {
editor.config.basicEntities = false;
editor.config.entities_greek = false;
editor.config.entities_latin = false;
editor.config.entities_additional = '';
});
});
これらのオプションは、CKEditorがnbsp gt lt amp ' "
他のラテン文字とギリシャ文字。
ソース: http://docs.ckeditor.com/#!/api/CKEDITOR.confighttp://docs.ckeditor.com/source/plugin48.html#CKEDITOR-config -cfg-basicEntities
試してください:
config.basicEntities = false;
私のために問題を修正しました。
in config.js:
_CKEDITOR.editorConfig = function( config ) {
config.enterMode = CKEDITOR.ENTER_BR; // <p></p> to <br />
config.entities = false;
config.basicEntities = false;
};
_
Phpでテキストを印刷できるようになった後、私にとってはうまくいきます:html_entity_decode( $someText )
;
文字を削除する([Backspace]ボタンを押す)などのテキスト編集操作が、編集したテキストノードを2つに分割していることに気付きました。このような新しく作成されたテキストノードの最後でスペースバーを押すと、通常のスペースではなく、常に_
_になります。私はnormalize()
http://www.w3schools.com/jsref/met_node_normalize.asp を呼び出して、変更後の要素を変更しました:
_CKEDITOR.on('instanceReady', function (ck) {
ck.editor.on("change", function (e) {
var sel = ck.editor.getSelection();
if (sel) {
var selected = sel.getStartElement();
if (selected && selected.$)
sel.getStartElement().$.normalize();
}
});
});
_
これは悪い解決策です
config.basicEntities = false;
<script type="text/javascript" src="/scripts/redactor/ckeditor/ckeditor.js"></script>
<p> </p>
のような空のブロックは、文字
が削除されるため、テキストにインデントを指定しません(config.fillEmptyBlocks = true;)。これは正しい解決策です
$text = preg_replace("#([^>]) #ui", "$1 ", $text);
を置換するPHP関数です。ただし、<p> </p>
などのタグ内の文字は除きます。私はすでにconfig.jsをいじる必要があったので、「?」を修正するためにサファリに現れるconfig.jsで3行になってしまいました
config.fillEmptyBlocks = function (element) {
return true; // DON'T DO ANYTHING!!!!!};
config.entities = false;
config.basicEntities = false;
いくつかのテーブルの作成でも同じ問題が発生しました。私が見たのは、CSSルールalign="left"
を使用してテーブルを作成した場合、<p> </p>
が追加されますが、CSSルールをalign="center"
に変更した場合、段落を編集でき、再び追加されません。