我编写了一个简单的测试来更改可编辑 div 内容中的文本。html结构已更改,但文本相同。
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Hello</title>
<script type="text/javascript" src="rangy-core.js"></script>
<script type="text/javascript" src="rangy-
selectionsaverestore.js"></script>
</head>
<body>
<div id="show" class="code" contenteditable="true"><span
style="color:red">12345</span>12345</div>
<script type="text/javascript">
window.setTimeout(function () {
// save selection / caret position
var show = document.getElementById("show");
show.innerHTML = "1234512345";
// restore select / caret position
}, 5000)
</script>
</body>
</html>
我试过这样的范围:
var s = rangy.saveSelection();
var show = document.getElementById("show");
show.innerHTML = "1234512345";
rangy.restoreSelection(s);
但是它报错:
异常警告:模块 SaveRestore:标记元素已被删除。无法恢复选择。
rangy 是否支持我上面提到的功能?如果是,我应该如何使用它?如果没有,我应该怎么做才能实现它?
更新:在我的场景中,我必须替换所有的 innerHTML,因为文本将被格式化为非常丰富的样式。但在我的情况下,没有样式的文本总是相同的。这是记录选择和插入符号位置并将其重新设置的任何可能方式吗?我应该使用什么样的 API?