0

为了恢复可编辑 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();  
  } 
}
4

0 回答 0