Javascript 恢复插入符号位置不使用IE
为了恢复可编辑DIV的插入符号位置,我使用以下Javascript代码:Javascript 恢复插入符号位置不使用IE,javascript,html,contenteditable,caret,Javascript,Html,Contenteditable,Caret,为了恢复可编辑DIV的插入符号位置,我使用以下Javascript代码: var savedRange,isInFocus; function saveSelection() { if(window.getSelection) { //non IE Browsers savedRange = window.getSelection().getRangeAt(0); } else if(document.selection) { //IE savedRange = docu
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();
}
}
}
此代码用于将文本区域中的一些文本添加到myInstance1 contenteditable DIV。并使用IE将文本添加到页面顶部
它可以与Firefox和Chrome配合使用
有人知道为什么IE部分不工作吗
找到了解决方案:通过添加document.getElementById('myInstance1').focus()
beforesavedRange=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();
}
}
IE倾向于比其他浏览器更早更频繁地破坏选择,所以我认为选择保存发生得太晚了。一些可能有用的链接:,我尝试了这个,但我有相同的结果<代码>函数fixDivCaret(IEmyIns){IEmyIns.attachEvent('onbeforedeactivate',函数(){var sel=document.selection;if(sel.type!=“None”){savedRange=sel.createRange();}};}if(document.selection){var IEmyIns=document.getElementById('myInstance1');fixDivCaret(IEmyIns);}
一个示例页面会有所帮助。@TimDown通过添加document.getElementById('myInstance1').focus()来实现
beforesavedRange=document.selection.createRange()代码>它可以工作:-D