如何创建开头插入符号和结尾带有锚点的选择

How do I create a selection with the caret at the start and the anchor at the end?

本文关键字:结尾 选择 符号 何创建 创建 插入 开头      更新时间:2023-09-26

如何创建开头插入符号,结尾有锚点的选择?

例如:

var sel = window.getSelection();
var el = document.getElementById("example");
var range = document.createRange();
range.setStart(el, 5);
range.setEnd(el, 8);
sel.removeAllRanges();
sel.addRange(range);
将定位点放在偏移量=

5,插入符号放在偏移量=8 处。

range.setEnd()设置为开始前的某个点不起作用(至少在 Chrome 中是这样)。

那么我该如何反其道而行之呢?

[我正在替换包含所选内容的元素的 outerHTML,并且我想完全保留所选内容]

好问题。 Selection.modify()是到目前为止我唯一能找到的东西:

var range = document.createRange();
range.setStart(el, 8);
range.setEnd(el, 8);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
for (var i = 0; i < 3; i++) {
    sel.modify("extend", "left", "character");
}

丑陋,但它有效。这是一个演示!

我发现selection.setBaseAndExtent()可以工作(至少在Chrome中)。

//removeAllRanges(); is unnecessary.
sel.setBaseAndExtent(el, 5, el, 0);