我正在使用 rangy 并且有一个带有 contenteditable div 的案例,其中可以保存用户选择并稍后恢复,以便可以插入 HTML。
我的问题是,如果用户在标题元素中进行选择,我不希望将 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 内而不是在它之前设置保存的选择边界。我不确定如何在标题元素之前移动边界。