Skip to content

Commit

Permalink
2024/05/09 時点の英語版に基づき更新
Browse files Browse the repository at this point in the history
  • Loading branch information
mfuji09 committed Jun 19, 2024
1 parent e92ed5a commit 385808b
Showing 1 changed file with 11 additions and 56 deletions.
67 changes: 11 additions & 56 deletions files/ja/web/api/document/caretrangefrompoint/index.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
---
title: Document.caretRangeFromPoint()
title: "Document: caretRangeFromPoint() メソッド"
short-title: caretRangeFromPoint()
slug: Web/API/Document/caretRangeFromPoint
l10n:
sourceCommit: 3966c40a3917825e6e467f1592bc7f8d59458e74
---

{{APIRef("DOM")}}{{Non-standard_header}}

**`caretRangeFromPoint()`** は {{domxref("Document")}} インターフェイスのメソッドで、指定された座標にある文書フラグメントの {{domxref("Range")}} オブジェクトを返します。

このメソッドは {{domxref("Document.caretPositionFromPoint")}} メソッドの WebKit 独自の実装です。

## 構文

```js
caretRangeFromPoint(x, y);
```js-nolint
caretRangeFromPoint(x, y)
```

### 引数
Expand All @@ -29,61 +34,11 @@ caretRangeFromPoint(x, y);

##

下の**デモ**の段落のどこかをクリックすると、クリックした箇所に改行が挿入されます。そのためのコードは、デモの下にあります。

### デモ

{{EmbedLiveSample('Examples')}}

以下のコードでは、まず `document.caretRangeFromPoint` の対応をチェックしますが、ブラウザーが対応していない場合は、次に {{domxref("Document.caretPositionFromPoint", "document.caretPositionFromPoint")}} をチェックし、代わりにそれを使用するようにしています。

### JavaScript

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

if (document.caretRangeFromPoint) {
range = document.caretRangeFromPoint(e.clientX, e.clientY);
textNode = range.startContainer;
offset = range.startOffset;
} else if (document.caretPositionFromPoint) {
range = document.caretPositionFromPoint(e.clientX, e.clientY);
textNode = range.offsetNode;
offset = range.offset;
} else {
document.body.textContent =
"[This browser supports neither" +
" document.caretRangeFromPoint" +
" nor document.caretPositionFromPoint.]";
return;
}
// Only split TEXT_NODEs
if (textNode && textNode.nodeType == 3) {
let replacement = textNode.splitText(offset);
let br = document.createElement("br");
textNode.parentNode.insertBefore(br, replacement);
}
}

let paragraphs = document.getElementsByTagName("p");
for (let i = 0; i < paragraphs.length; i++) {
paragraphs[i].addEventListener("click", insertBreakAtPoint, false);
}
```
このメソッドのライブサンプルを見るには、{{domxref("Document.caretPositionFromPoint#Examples", "Document.caretPositionFromPoint")}} ページを参照してください。

### 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>
```
どの仕様書にも含まれていません。

## ブラウザーの互換性

Expand Down

0 comments on commit 385808b

Please sign in to comment.