Document: caretPositionFromPoint() メソッド

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

caretPositionFromPoint()Document インターフェイスのメソッドで、この DOM ノードを含む CaretPosition オブジェクトを、そのノード内のキャレットとキャレットの文字オフセットと共に返します。

構文

js
caretPositionFromPoint(x, y)

引数

x

ポイントの水平座標。

y

ポイントの垂直座標。

返値

CaretPosition オブジェクト。

以下のデモの段落のどこかをクリックすると、クリックした位置に改行を挿入します。コードはデモの下にあります。

デモ

下記のコードでは、最初に document.caretPositionFromPoint の 対応状況を調べますが、ブラウザーが対応していない場合は document.caretRangeFromPoint を調べて、代わりにそれを使用します。

JavaScript

js
function insertBreakAtPoint(e) {
  let range;
  let textNode;
  let offset;

  if (document.caretPositionFromPoint) {
    range = document.caretPositionFromPoint(e.clientX, e.clientY);
    textNode = range.offsetNode;
    offset = range.offset;
  } else if (document.caretRangeFromPoint) {
    // WebKit 独自の代替メソッドを使用
    range = document.caretRangeFromPoint(e.clientX, e.clientY);
    textNode = range.startContainer;
    offset = range.startOffset;
  } else {
    // どちらのメソッドも対応していなければ、何もしない
    return;
  }
  // TEXT_NODE のみを分割
  if (textNode?.nodeType === 3) {
    let replacement = textNode.splitText(offset);
    let br = document.createElement("br");
    textNode.parentNode.insertBefore(br, replacement);
  }
}

let paragraphs = document.getElementsByTagName("p");
for (const paragraph of paragraphs) {
  paragraph.addEventListener("click", insertBreakAtPoint, false);
}

HTML

html
<p>
  Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
  eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
  voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita
  kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
</p>

仕様書

Specification
CSSOM View Module
# dom-document-caretpositionfrompoint

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
caretPositionFromPoint
options parameter

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
In development. Supported in a pre-release version.
In development. Supported in a pre-release version.
No support
No support
Has more compatibility info.

関連情報