【发布时间】:2014-03-14 00:45:20
【问题描述】:
我目前正在做一个项目,在该项目中单击按钮后,一个 div 会插入到插入符号位置的内容可编辑 div 中。
我有一般机制工作,但是在我插入新 div 并单击内容可编辑区域并单击该区域以添加更多光标对齐的文本后,在 chrome 中(我尚未测试其他浏览器)内容可编辑区域的右侧。
如果我在光标在那里时继续输入,文本将按预期位于 div 旁边,并在按下退格键时正确删除。
这是我的 javascript:
createVar = function () {
var variable = document.createElement('div'),
nested = document.createElement('div');
variable.className = 'msg_var';
variable.spellcheck = false;
variable.contentEditable = false;
nested.className = "msg_var_content";
nested.innerHTML = "foobar";
variable.appendChild(nested);
nested = document.createElement('div');
nested.className = 'msg_var_remove';
nested.innerHTML = 'x';
variable.appendChild(nested);
nested.setAttribute(
'onclick',
'this.parentNode.parentNode.removeChild(this.parentNode);'
);
return variable;
}
addVar = function () {
var body = document.getElementById('body'),
variable = createVar(),
range,
sel;
if (window.getSelection) {
// IE9 and non-IE
sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
range = sel.getRangeAt(0);
range.deleteContents();
range.insertNode(variable);
range = range.cloneRange();
range.selectNodeContents(variable);
range.collapse(false);
sel.removeAllRanges();
sel.addRange(range);
}
}
}
我创建了一个 jsfiddle 来帮助描述我的情况: http://jsfiddle.net/6XAfv/3/
有人知道为什么我插入 div 时光标会移动吗? 如何将光标保持在 div 旁边?
【问题讨论】:
-
不过,它确实有点像胡萝卜。 :)
-
我的错,更新了帖子
标签: javascript html contenteditable