恢复插入位置不适用于IE

时间:2013-07-09 09:16:50

标签: 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 = 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();之前添加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(); } } : - D

{{1}}

0 个答案:

没有答案