CARVIEW |
Select Language
HTTP/2 200
content-type: text/html
x-guploader-uploadid: AAwnv3LBpcYpbhPkxsALTeu85LQf1Y-6GNiPdvfpUQQDGsCf1jQ-NJLzI9q4jJ7hX4_MqnY6
cache-control: public, max-age=3600
expires: Tue, 07 Oct 2025 08:44:09 GMT
last-modified: Tue, 07 Oct 2025 01:14:11 GMT
etag: W/"d72220040f06b8c1d01c6995caf14b3a"
x-goog-generation: 1759799651826882
x-goog-metageneration: 1
x-goog-stored-content-encoding: identity
x-goog-stored-content-length: 177526
x-goog-meta-goog-reserved-file-mtime: 1759797716
x-goog-hash: crc32c=+OlMLw==, md5=1yIgBA8GuMHQHGmVyvFLOg==
x-goog-storage-class: STANDARD
accept-ranges: none
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
alt-svc: clear
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
strict-transport-security: max-age=63072000
content-security-policy: default-src 'self'; script-src 'report-sample' 'self' 'wasm-unsafe-eval' https://www.google-analytics.com/analytics.js https://www.googletagmanager.com/gtag/js assets.codepen.io production-assets.codepen.io https://js.stripe.com 'sha256-XNBp89FG76amD8BqrJzyflxOF9PaWPqPqvJfKZPCv7M=' 'sha256-YCNoU9DNiinACbd8n6UPyB/8vj0kXvhkOni9/06SuYw=' 'sha256-PZjP7OR6mBEtnvXIZfCZ5PuOlxoDF1LDZL8aj8c42rw='; script-src-elem 'report-sample' 'self' 'wasm-unsafe-eval' https://www.google-analytics.com/analytics.js https://www.googletagmanager.com/gtag/js assets.codepen.io production-assets.codepen.io https://js.stripe.com 'sha256-XNBp89FG76amD8BqrJzyflxOF9PaWPqPqvJfKZPCv7M=' 'sha256-YCNoU9DNiinACbd8n6UPyB/8vj0kXvhkOni9/06SuYw=' 'sha256-PZjP7OR6mBEtnvXIZfCZ5PuOlxoDF1LDZL8aj8c42rw='; style-src 'report-sample' 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; connect-src 'self' developer.allizom.org bcd.developer.allizom.org bcd.developer.mozilla.org updates.developer.allizom.org updates.developer.mozilla.org https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com https://incoming.telemetry.mozilla.org https://observatory-api.mdn.allizom.net https://observatory-api.mdn.mozilla.net https://api.github.com/search/issues stats.g.doubleclick.net https://api.stripe.com; font-src 'self'; frame-src 'self' interactive-examples.mdn.mozilla.net interactive-examples.mdn.allizom.net mdn.github.io live-samples.mdn.mozilla.net live-samples.mdn.allizom.net *.mdnplay.dev *.mdnyalp.dev *.play.test.mdn.allizom.net https://v2.scrimba.com https://scrimba.com jsfiddle.net www.youtube-nocookie.com codepen.io survey.alchemer.com https://js.stripe.com; img-src 'self' data: *.githubusercontent.com *.googleusercontent.com *.gravatar.com mozillausercontent.com firefoxusercontent.com profile.stage.mozaws.net profile.accounts.firefox.com developer.mozilla.org mdn.dev interactive-examples.mdn.mozilla.net interactive-examples.mdn.allizom.net wikipedia.org upload.wikimedia.org https://mdn.github.io/shared-assets/ https://mdn.dev/ https://*.google-analytics.com https://*.googletagmanager.com www.gstatic.com; manifest-src 'self'; media-src 'self' archive.org videos.cdn.mozilla.net https://mdn.github.io/shared-assets/; child-src 'self'; worker-src 'self';
x-frame-options: DENY
origin-trial: AxVILwizhbMjxFeHOn1P3R8niO1RJY/smaK4B4d1rLzc1gTaxtXMSaTi+FoigYgCw40uFRDwFcEAeqDR+vVLOW4AAABfeyJvcmlnaW4iOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZyIsImZlYXR1cmUiOiJQcml2YXRlQXR0cmlidXRpb25WMiIsImV4cGlyeSI6MTc0MjA3OTYwMH0=
x-cloud-trace-context: a02b25e7649706d34407e3bff17ea813
date: Tue, 07 Oct 2025 07:44:10 GMT
server: Google Frontend
via: 1.1 google
vary: Accept-Encoding
content-encoding: gzip
x-cache: miss
Document: caretPositionFromPoint() メソッド - Web API | MDN
Toggle sidebar
>
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
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)
引数
返値
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);
}
let message = document.getElementById("message");
if (document.caretPositionFromPoint) {
message.textContent =
"このブラウザーは標準の document.caretPositionFromPoint に対応しています";
message.classList.add("supported");
} else if (document.caretRangeFromPoint) {
message.textContent =
"このブラウザーは標準外の document.caretRangeFromPoint に対応しています";
message.classList.add("supported");
}
HTML
<div id="message">
このブラウザーは document.caretRangeFromPoint にも
document.caretPositionFromPoint にも対応していません。
</div>
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>
#message {
color: red;
font-weight: bold;
}
#message.fallback {
color: darkorange;
}
#message.supported {
color: green;
}
仕様書
Specification |
---|
CSSOM View Module> # dom-document-caretpositionfrompoint> |
ブラウザーの互換性
Loading…