我有一个跨度,双击它后变成可编辑的。但是,由于双击而选择了一些文本,我使用以下代码删除了该选择:
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.firstChild
element