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();
    }
  }
}

このコードは、テキストエリアから 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