2

たとえば、テキストの編集中に、「red」という単語のすべてのインスタンスをスパンで色付けできますか? もちろん、データを保存するときに単純な正規表現を使用できますが、入力にテキストに色を付けることに興味があります。ユーザーの入力時にテキストを積極的に装飾するプラグインは見つかりませんでした。

私はまだ調査中であり、どのバージョンの ckeditor にも、さらには ckeditor にもまったく関連付けられていません。

4

1 に答える 1

1

現在、同様の問題に取り組んでおり、プラグインも見つかりませんでした。私は現在、次の手動アプローチを使用しています: CKEDITOR.styleを定義し、その applyToRange() メソッドを使用します。CKEDITOR.dom.walkerを介して完全なドキュメントをトラバースして、 CKEDITOR.dom.rangeを生成します。

たとえば、ウォーカーを使用してテキストをトラバースできます。walker は各「ノード」を返します。これにより、すべての html をフィルタリングできます。テキストノードはタイプ 3 です。あなたの場合、隣接するテキストノードのケースをキャッチする必要があるかもしれません (テキストノードの開始と終了がどのように定義されているか少し混乱しました)。マークしたいテキストの開始ノードと終了ノードがある場合は、それらから範囲を作成できます。メソッド editor.createRange() を使用して、開始要素と終了要素を手動で設定します。オフセットを設定することを忘れないでください。

スタイル定義に応じて、範囲を囲む span 要素が生成されます。このスパン要素を参照するように範囲が更新されます。これは、ユーザーがコンテンツを変更した場合など、スタイルを再度削除したくない場合に便利です。

さらに、テキストをいつチェックするかという戦略が必要です。onChangeプラグインを見てください。主要な関連イベントも役立つ可能性があります。

それは私自身が現時点でどれだけ離れているかです。問題が発生したり、より簡単な解決策が見つかった場合は、投稿を更新します。残念ながら、コード自体を共有することはできません。まだあまりテストしていません。私の現在の進歩があなたに役立つことを願っています。

于 2014-08-08T10:41:04.950 に答える