我有一个跨度,双击后它变得可编辑。但是,由于双击而选择了一些文本,我使用以下代码删除了该选择:
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
。
答案 0 :(得分:0)
一个类似的问题及其解决方案是here,我很惊讶在搜索的第二天发现它,考虑到我昨天的进攻性搜索。欢迎使用任何更好的解决方案,因为即使是这个也不能在第一次双击时绕过文本选择。