Я написал простой тест для изменения текста в редактируемом содержимом 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);
Но сообщается об ошибке:
Предупреждение Rangy: Модуль SaveRestore: элемент Marker был удален. Не удается восстановить выделение.
Поддерживает ли rangy функцию, о которой я говорил выше? Если да, то как мне его использовать? Если нет, что я должен сделать, чтобы реализовать это?
ОБНОВЛЕНИЕ: В моем сценарии я должен заменить весь innerHTML, так как текст будет отформатирован в очень богатый стиль. Но в моем случае текст всегда одинаков без стилей. Это какой-нибудь возможный способ записать выбор и позицию каретки и установить ее обратно? Какой API мне следует использовать?