为了恢复可编辑 DIV 的插入符号位置,我使用以下 Javascript 代码:
var savedRange,isInFocus;
function saveSelection() {
if(window.getSelection) { //non IE Browsers
savedRange = window.getSelection().getRangeAt(0);
} else if(document.selection) { //IE
savedRange = document.selection.createRange();
}
}
function restoreSelection() {
isInFocus = true;
document.getElementById('myInstance1').focus();
if(savedRange != null) {
if (window.getSelection) { //non IE and there is already a selection
var s = window.getSelection();
if (s.rangeCount > 0)
s.removeAllRanges();
s.addRange(savedRange);
} else if (document.createRange) { //non IE and no selection
window.getSelection().addRange(savedRange);
} else if (document.selection) { //IE
savedRange.select();
}
}
}
此代码用于将一些文本从 textarea 添加到 myInstance1 contenteditable DIV。使用 IE,它会在页面顶部添加文本。
它适用于 Firefox 和 Chrome。
有谁知道为什么 IE 部分不起作用?
找到了一个解决方案:通过在它起作用document.getElementById('myInstance1').focus();
之前添加savedRange = document.selection.createRange();
:-D
function saveSelection() {
if(window.getSelection) { //non IE Browsers
savedRange = window.getSelection().getRangeAt(0);
} else if(document.selection) { //IE
document.getElementById('myInstance1').focus();
savedRange = document.selection.createRange();
}
}