1

如何创建一个以插入符号开头和锚点结尾的选择?

例如:

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);

将锚点放在 offset=5 处,将插入符号放在 offset=8 处。

在开始之前设置range.setEnd()一个点不起作用(至少在 Chrome 中)。

那么我该如何做相反的事情呢?

[我正在替换包含选择的元素的 outerHTML,我想准确地保留选择]

4

2 回答 2

0

好问题。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");
}

丑陋,但它的工作原理。这是一个演示!

于 2013-11-08T03:00:03.080 回答
0

我发现selection.setBaseAndExtent()有效(至少在 Chrome 中)。

//removeAllRanges(); is unnecessary.
sel.setBaseAndExtent(el, 5, el, 0);
于 2021-07-29T05:21:24.193 回答