Ich stieß auf diesen Beitrag, der 2 Funktionen zum Speichern und Wiederherstellen von ausgewählten Text aus einem contenteditable div zeigt. Ich habe die untere div als zufrieden stellbar und die 2 Funktion von der anderen post. Wie verwende ich diese Funktionen, um ausgewählten Text zu speichern und wiederherzustellen.contenteditable ausgewählten Text speichern und wiederherstellen
<div style="width:300px;padding:10px;" contenteditable="true">test test test test</div>
<script>
function saveSelection() {
if (window.getSelection) {
sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
return sel.getRangeAt(0);
}
} else if (document.selection && document.selection.createRange) {
return document.selection.createRange();
}
return null;
}
function restoreSelection(range) {
if (range) {
if (window.getSelection) {
sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
} else if (document.selection && range.select) {
range.select();
}
}
}
</script>
Sie müssen Methoden des Range-Objekts verwenden helfen (siehe mozilla doc: https://developer.mozilla.org/de/DOM/range). Grundsätzlich besteht ein Bereich aus einem Knoten und einem Offset innerhalb dieses Knotens. Eine Möglichkeit, den HTML-Code zusammen mit dem Bereich zu speichern, besteht in der Verwendung von "carets" (siehe Schließen von Bibliotheken für Ideen: http://closure-library.googlecode.com/svn/docs/class_goog_dom_SavedCaretRange.html). – yonran