0

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

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

此操作后,现在可编辑的非选定跨度失去焦点。我只想将插入符号移动到跨度中最后点击的位置。我尝试了下面的代码但没有用(“元素”本身就是跨度):

...
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);

我尝试了我发现的任何东西,但无法让它发挥作用。由于沮丧,我无法再集中注意力。如果你能帮助我,那就太棒了……

更新:应该使用inrange.setStart()range.setEnd(),而不是.element.firstChildelement

4

1 回答 1

0

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

于 2013-09-13T11:09:59.867 回答