Типичным использованием было бы отображение какого-либо виджета или диалогового окна, чтобы принять ввод от пользователя (таким образом, потенциально разрушая исходный выбор) и восстановление выбора после того, как этот виджет был скрыт. На самом деле использовать функции довольно просто; самая большая опасность - попытаться сохранить выделение после того, как оно уже уничтожено.
Вот простой пример. Он отображает текстовый ввод и перезаписывает выбор в редактируемом <div>
текстом из этого ввода. Здесь слишком много кода для вставки, поэтому вот полный код: http://www.jsfiddle.net/timdown/cCAWC/3/
Extract:
<div id="test" contenteditable="true">Some editable text</div>
<input type="button" unselectable="on" onclick="displayTextInserter();"
value="Insert text">
<div id="textInserter">
<input type="text" id="textToInsert">
<input type="button" onclick="insertText()" value="Insert">
</div>
<script type="text/javascript">
var selRange;
function displayTextInserter() {
selRange = saveSelection();
document.getElementById("textInserter").style.display = "block";
document.getElementById("textToInsert").focus();
}
function insertText() {
var text = document.getElementById("textToInsert").value;
document.getElementById("textInserter").style.display = "none";
restoreSelection(selRange);
document.getElementById("test").focus();
insertTextAtCursor(text);
}
</script>