3

tinyMCEで現在のキャレット位置を取得するにはどうすればよいですか? この質問「カーソル位置またはカーソルが TinyMCEにある行の番号を取得する」を参照すると、tinyMCE で行番号を取得する方法が記載されていますが、実際のキャレット位置を取得する方法に関する参照が見つかりませんか? tinyMCE をリアルタイム コラボレーション用のドキュメントとして使用しているため、これが必要です。そのため、同じドキュメントに書き込むクライアントのキャレットの位置を知って、いくつかのイベント (キーストローク、クリックなど) で位置をブロードキャストできるようにする必要があります。 )、あるクライアントの位置にカスタムキャレットをペイントして、他のクライアントがどこで書いているか編集しているかを知ることができます。

私が見つけた唯一の解決策は、コンテンツの後にスパンを追加し、それを選択して次のように削除することでした:

     <span id="caret_pos_holder"></span>

次に、挿入したら、これを行います...

     ed.selection.select(ed.dom.select('span#caret_pos_holder')[0]); //select the span
     ed.dom.remove(ed.dom.select('span#caret_pos_holder')[0]); //remove the span

これはそれを回避する唯一の方法ですか?

EDIT:実際には、上記はカーソルの位置をコンテンツの最後に設定するだけで、ブックマークを使用してすでに処理しています。

カーソルの位置を取得できるものがない可能性はありますか?

4

1 に答える 1

1
var sel = ed.selection.getSel();

現在の選択を選択オブジェクトとして返します。その後、クエリsel.anchorNodeを実行しsel.anchorOffsetて現在のキャレット位置を取得できます。

このデータを他のクライアントにブロードキャストすることは、位置を数値として抽出しようとするよりも簡単ですが、それが本当に必要な場合は、上記の位置から DOM を登ることができます。

于 2013-05-12T15:57:23.033 に答える