当我在一个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);