2012-02-07 37 views
2

私はtinyMCE用の小さな単語予測プラグインを作成しており、少しのテキストを抽出してから予測される単語のリストからテキストを挿入する必要があります。カーソルがどこにあるのか分かり、mceInsertContentコマンドを使うことができるので、挿入に問題はありません。しかし、予測のためのテキストを取得する...tinyMCE - カーソル位置までコンテンツを取得する

私は、カーソルの位置の直前の文字で終わるテキストのサブセットを抽出し、テキストの先頭から始める必要があります。私は必要ならば自分でHTMLタグを取り除くことができますが、可能ならばtinyMCEにするのが好きです。私はこのようにそれをやって考えていた

  1. mceInsertContent
  2. を使用して、現在のカーソル位置決幅で挿入ブックマークは、テキストの先頭からの私のブックマークまでの範囲を作成します。
  3. 範囲の内容を取得します。
  4. ブックマークを削除します。

私は、私には少し挑戦であることが判明したtinyMCEによく精通しているわけではないので、これをどうやって行うのですか?

コードはクロスブラウザで動作する必要があります。

答えて

5

あなたは

A.がB.は、テキストの開始からまでの範囲を作成しますmceInsertContent

ed.execCommand('mceInsertContent', false,'<span class="marker">\ufeff</span>'); 

を使用して、現在のカーソル位置決幅でブックマークを挿入します(EDはTinyMCEをエディタオブジェクトである)、このコードスニペットを試してみて私のブックマーク。

var rng = ed.selection.getRng(1); 
var rng2 = rng.cloneRange(); 

// set start of range to begin of forst paragraph 
rng2.setStartBefore($(ed.getBody()).find('p:first').get(0)); 

rng2.setEndBefore($(ed.getBody()).find('span.marker').get(0)); 
ed.selection.setRng(rng2); 

C.範囲の内容を取得します。

// get content of selection (range) 
var content = ed.selection.getContent({format: 'text'}); 

D.ブックマークを削除します。

$(ed.getBody()).find('span.marker').remove(); 

更新:あなたは

ed.selection.setRng(rng); 
+0

それはテキストの実際の選択をすることなく行うことが可能ですあなたの最初の範囲をリセットすることが選択の変更を懸念している場合は? – Woodgnome

+0

多分、あなたはすべてのhtmlタグを含むコンテンツを必要とするのでしょうか? – Thariama

+0

'ed.selection.setRng(rng);'プレーンテキストのHTMLを抽出しているかどうかにかかわらずジョブを実行します - 回答:-) – Woodgnome

関連する問題