0

テキストを強調表示する前に、rangy を使用してキャレット位置を保存しようとしています。しかし、htmlを挿入しているので、キャレットの復元に問題があると思います。コードは次のとおりです。

var saved_selection = rangy.saveSelection( );

$( "#code" ).html( code_hl.highlight(   $( "#code" ).text( ),
                                        -1,
                                        -1 ) );

rangy.restoreSelection( saved_selection );

マーカー要素が削除されたと言い続けています。htmlを挿入しているのでうまくいきませんか?

あるいは、キャレットのインデックスを単独で使用してキャレットを設定できるかどうか疑問に思っています。私が書いた別のオブジェクト kb_input があります。これは、キャレットの位置、現在の行のオフセット、および現在の行番号を追跡します。ですので、それも参考になるかと思います。

contenteditable タグのキャレット位置と範囲の関係を誰かが理解するのを手伝ってくれれば、それで十分です。

4

2 に答える 2

3

Rangy 1.3 (まだアルファ版ですが、現在開発中です) を使用している場合は、代わりに文字インデックス ベースのアプローチを使用できます。これにより、マーカー要素を挿入する必要がなくなります。

// Save the selection by character index
bookmark = rangy.getSelection().getBookmark(editableEl);

// Do stuff that changes the editable content...

// Restore the selection
rangy.getSelection().moveToBookmark(bookmark);

デモ: http://rangy.googlecode.com/svn/trunk/demos/bookmark.html

于 2013-04-10T08:57:04.947 に答える