私は rangy を使用しており、HTML を挿入できるように、ユーザーの選択を保存して後で復元できる contenteditable div のケースがあります。
私の問題は、ユーザーがヘッダー要素内で選択した場合、ヘッダー内に html を挿入したくないということです。
そのため、ヘッダー内で選択が行われた場合にヘッダー要素の前に移動できるように、rangyの使用方法を理解しようとしています。
したがって、ユーザーが h1 内で選択した場合:
<div id="editable" contenteditable>
<h1>|user selects here| Header Text</h1>
</div>
次に、保存された選択範囲が h1 の前に移動されます。
| selection boundary moved here |<div id="editable" contenteditable>
<h1>|user selects here| Header Text</h1>
</div>
選択境界を移動できるかどうかを確認するために、次のことを試しました。
var sel = rangy.getSelection();
var range = sel.getRangeAt(0);
range.setStartBefore(sel.anchorNode.parentNode);
sel.removeAllRanges();
sel.addRange(range);
selected = rangy.saveSelection();
しかし、H1 内で選択すると、保存された選択境界が H1 内に設定され、その前には設定されません。ヘッダー要素の前に境界を移動する方法がわかりません。