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

Javascript 如何创建一个以插入符号开头、以锚定符号结尾的选择?,javascript,Javascript,如何创建一个以插入符号开头、以锚定符号结尾的选择 例如: 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处,插入符号放

如何创建一个以插入符号开头、以锚定符号结尾的选择

例如:

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");
}
var range=document.createRange();
范围设置开始(el,8);
设定范围(el,8);
var sel=window.getSelection();
选择removeAllRanges();
选择添加范围(范围);
对于(变量i=0;i<3;i++){
选择修改(“扩展”、“左”、“字符”);
}

很难看,但很管用

工作,但限于“字符”、“单词”等。如果节点不同,则会非常复杂。。。如果可能的话。@Jeff:是的,你只需要一个字符一个字符地写,还有一些树的东西。我已经在为我的一位编辑做这件事了,所以也许我今晚可以完成它:P