内容可编辑:将光标移动到插入的html节点(webkit/ie)之外



当我在可编辑内容的div中插入html标记时,我需要将光标移到新插入的元素的外部(右侧),因此如果我继续键入,新文本将不格式化。

对于Firefox,我发现这个解决方案运行得很好:

node = document.createElement("strong");
node.innerHTML = "test";
range.deleteContents();
range.insertNode(node);
range.collapse(false);

可变范围是这样设置的:

if (window.getSelection) {
    var sel = window.getSelection();
    if (sel.getRangeAt && sel.rangeCount) {
        range = sel.getRangeAt(0);
    }
}

在webkit浏览器(Chrome/Safari)中使用上述代码将光标放在新标记之外,但放在左侧。

有没有解决方案(Chrome/Safari)和IE支持(主要是9,可选8)?

感谢

=========================================

感谢Tim的建议,以下是工作代码:

var node = document.createElement("strong");
node.innerHTML = "test";
var space = document.createElement("span");
space.innerHTML = "u200B";
range.insertNode(space);
range.insertNode(node);
range.collapse(false);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);

您需要在非Mozilla浏览器中重新选择范围。这将适用于除IE<=8:

var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);

对于IE<=8,你可以使用不同的方法。这是我的另一个答案,有一个完整的例子:

https://stackoverflow.com/a/4836809/96100

最新更新