Javascript Contenteditable:将光标移到插入的html节点外(webkit/ie)

Javascript Contenteditable:将光标移到插入的html节点外(webkit/ie),javascript,contenteditable,Javascript,Contenteditable,当我在contenteditable div中插入html标记时,我需要光标移到新插入元素的外部(右侧),因此如果我继续键入,新文本将不格式化 使用Firefox,我发现这个解决方案运行良好: node = document.createElement("strong"); node.innerHTML = "test"; range.deleteContents(); range.insertNode(node); range.collapse(false); 变量范围的设置方式如下: i

当我在contenteditable 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之外的所有主要浏览器,谢谢Tim,光标现在已正确向右移动,但如果我键入文本,则文本已格式化,因此光标仍在tag@TedR:这是因为某些浏览器(特别是WebKit和IE)确定插入符号在文档中的位置,并将标准化您选择的任何范围以符合这些想法。唯一的解决方案是绕过它:例如,在插入的元素后添加一个零宽度空格字符。这不好。我尝试了类似的方法,在节点的末尾添加空间,但光标仍然没有移动到元素之外。所有后续插入都位于前一个插入粗体**s内​A.​**boldWow这真的很有帮助,我已经搜索这个解决方案好几天了!!!谢谢
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);