如何在contentedable span中设置光标位置

时间:2013-09-13 00:55:37

标签: javascript jquery selection contenteditable caret

我有一个跨度,双击后它变得可编辑。但是,由于双击而选择了一些文本,我使用以下代码删除了该选择:

function removeSelectedText(element) {
if (window.getSelection || document.getSelection) {
    oSelection = (window.getSelection ? window:document).getSelection();
    oSelection.removeAllRanges();
} else {
    document.selection.empty();
}
}

完成此操作后,现在可编辑的非选定范围将失去焦点。我只想将插入符号移动到跨度中最后一个单击的位置。我尝试下面的代码但是没有用('element'是span本身):

...
var selection = (window.getSelection ? window:document).getSelection();
var position = selection.getRangeAt(0).focusOffset;
element.focus();

var range = document.createRange();
range.setStart(element, position);
range.setEnd(element, position);
range.collapse(true);
selection.removeAllRanges();
selection.addRange(range);

我尝试了我发现的任何东西,但无法使其正常工作。由于沮丧,我不能再集中注意力了。如果你帮助我,那将是非常棒的......

更新:在range.setStart()range.setEnd()中,应使用element.firstChild代替element

1 个答案:

答案 0 :(得分:0)

一个类似的问题及其解决方案是here,我很惊讶在搜索的第二天发现它,考虑到我昨天的进攻性搜索。欢迎使用任何更好的解决方案,因为即使是这个也不能在第一次双击时绕过文本选择。