Selection composed ranges
Selection.getComposedRanges() メソッドは、現在の選択範囲を表す StaticRange オブジェクトの配列を返します。このメソッドは、シャドウ境界をまたぐ可能性のある範囲を返す場合があります。
選択範囲の端点がシャドウツリー内、あるいは異なるシャドウツリー内にある可能性があり、またこれらが閉じられている場合があるため、このメソッドはデフォルトではシャドウツリー内のノードを返すことはできません。 このメソッドで、シャドウツリー内のノードを含む選択範囲を返す必要がある場合は、それらのツリーに対応する ShadowRoot オブジェクトを、メソッドの引数として渡す必要があります。 対応するルートが指定されておらず、選択範囲の開始点または終了点がシャドウツリー内にある場合、返される範囲は、ルート内の特定のノードではなく、シャドウルートのホストを含むように再定義されます。
返される範囲は、getComposedRanges() が呼び出された時点での範囲を表します。 DOM またはシャドウ DOM が変更された場合、選択範囲が不正確になる可能性があります。 アプリケーションコードでは、MutationObserver を使用して DOM の変更を監視し、その後 Selection.setBaseAndExtent() を呼び出して選択範囲を更新することができます。
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| 137 | 137 | 142 | 17 | 137 | 17 | |
基本構文
JAVASCRIPT
getComposedRanges()
getComposedRanges(options) 実務での使いどころ
-
Selection composed ranges の活用
Selection.getComposedRanges() メソッドは、現在の選択範囲を表す StaticRange オブジェクトの配列を返します。
注意点
- 古いブラウザでは対応していない場合がある。
実装メモ
- 一部の API はセキュアコンテキスト (HTTPS) やユーザー操作起点を必要とする。利用前に要件を確認すること。