2

JavaScriptを使用してCKEditorインスタンスで特定の単語を検索する方法を教えてもらえますか?検索という名前のボタンとテキストボックスが1つずつあります。テキストボックスに単語を入力してボタンを押すと、エディタにテキストが表示されます。ソリューションはJavaScriptのみである必要があります。

4

3 に答える 3

3

コマンドがありますがfindeditor.execCommand( 'find' )検索と置換ダイアログのみが表示され、満足のいくものではありません。

残念ながら、このダイアログの動作をコピーするには、独自の検索implを作成する必要があります。これは、その背後にあるロジックが外部から到達できないためです(これには、http://dev.ckeditor.comのチケットが必要です)。findプラグインimplは_source/plugins / find / dialogs / find.jsで確認できますが、説明がないと十分に役立ちません。

それで、あなたは何をする必要がありますか?

まず、テキストが正確にどの位置にあるかを見つける必要があります。これは簡単なことではありません:)。DOMツリーから開始しeditor.document.getBody()、ソース順にトラバースする必要があります。あなたを助けることができるツールがあります- CKEDITOR.dom.walker

new CKEDITOR.dom.range( editor.document )2番目-範囲( )を作成し、その、、、を設定するstartContainer必要があります。W3Cの範囲の詳細は次のとおりです-http: //www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html-CKEDITORの範囲は非常に似ています-APIドキュメントで詳細を確認できます(申し訳ありませんが、リンクを投稿しますが、評判が低いので:D)できません。startOffsetendContainerendOffset

そして、範囲の開始と終了を設定するときは、を呼び出す必要がありますrange.select()。エディターがフォーカスされている場合(これを呼び出すことで確認できますeditor.focus())、範囲が選択されます。

于 2012-06-18T23:40:07.300 に答える
0

CKEditor内のテキストを変数に抽出し(CKEditorがそれ自体でその機能を提供していても驚かないでしょう)、抽出されたテキストに対して関数.indexOf(SubstringToFind)を実行します。

于 2012-06-12T13:20:39.080 に答える
0

を使用して、CKEditorインスタンスからデータを抽出できますinstance.GetData()

単語をどのように見つけるかはあなた次第です。単純な場合は.indexOf()@TomTemanが提案するように使用できますが、そうでない場合は正規表現が必要になる場合があります。

于 2012-06-12T13:26:56.037 に答える