2

divを使ったUIWebviewでリッチテキストエディタを作っていますcontentEditable。キャレットの位置をピクセル単位で取得したい。私はたくさん検索しましたが、以下のコードを取得しました。

function getCaretClientPosition() {
  var x = 0, y = 0;
  var sel = window.getSelection();
  if (sel.rangeCount) {
    var range = sel.getRangeAt(0);
    if (range.getClientRects) {
      var rects = range.getClientRects();
      if (rects.length > 0) {
        x = rects[0].left;
        y = rects[0].top;
      }
    }
  }
  return { x: x, y: y };
}

上記のコードは、改行を入力するまでうまく機能します。sel.getRangeAt(0)null を返すため、関数は右キャレットの Y ピクセルを返すことができません。

4

2 に答える 2