如何在更改HTML元素内容时保留选择?

3
我希望能在更改HTML元素内容时保留用户的选择。如果在更新元素时选择的开头或结尾恰好在内部,整个选择将丢失。拖动创建选择时也会发生这种情况,因此如果用户正在拖动选择并且光标在元素上时更新了元素的内部HTML,则用户必须重新开始。
我有一个包含格式为“hh:mm:ss am”的时间并每秒更新的元素。文本长度永远不会改变,所以这不是问题。
我尝试过以下方法:
var s = window.getSelection();
if (!s.isCollapsed) {
    var range = document.createRange();
    range.setStart(s.anchorNode,s.anchorOffset);
    range.setEnd(s.focusNode,s.focusOffset);
}

document.getElementById('time').innerHTML = new Date().toString();

if (typeof range != 'undefined') { s.removeAllRanges(); s.addRange(range); }

这是我研究所得到的最佳结果,但似乎并没有什么区别。

如果选择开始或结束于此范围内,我该怎么做才能防止选择消失?

1个回答

0

您需要重新设置选择区域:range.selectNodeContents(newNode);

newNode = document.getElementById("[span id]");

我不想选择整个模式。我想保留用户当前在页面上的任何选择,无论它是否在时间跨度内或部分在时间跨度内。 - jnm2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接