我遇到這個帖子,顯示2如何保存和恢復從contenteditable div選定的文本功能。我將下面的div設置爲contenteditable,並將另一個帖子中的2個函數。如何使用這些功能保存和恢復選定的文本。contenteditable選定的文本保存和恢復
<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>
您需要使用Range對象的方法(見Mozilla瀏覽器doc:https://developer.mozilla.org/en/DOM/range)。基本上,一個範圍由該節點內的節點和偏移量組成。將HTML與範圍一起保存的一種方法是使用「carets」(請參閱Closure Library以獲取想法:http://closure-library.googlecode.com/svn/docs/class_goog_dom_SavedCaretRange.html)。 – yonran 2011-01-14 04:55:41