Range: compareNode() メソッド

非推奨: この機能は非推奨になりました。まだ対応しているブラウザーがあるかもしれませんが、すでに関連するウェブ標準から削除されているか、削除の手続き中であるか、互換性のためだけに残されている可能性があります。使用を避け、できれば既存のコードは更新してください。このページの下部にある互換性一覧表を見て判断してください。この機能は突然動作しなくなる可能性があることに注意してください。

非標準: この機能は標準ではなく、標準化の予定もありません。公開されているウェブサイトには使用しないでください。ユーザーによっては使用できないことがあります。実装ごとに大きな差があることもあり、将来は振る舞いが変わるかもしれません。

Range.compareNode()Node の位置を示す定数を返します。

取りうる値は以下の通りです。

NODE_BEFORE (0)

Node はこの Range より前に始まる

NODE_AFTER (1)

Node はこの Range より後に終わる

NODE_BEFORE_AND_AFTER (2)

Node はこの Range より前に始まり、後に終わる

NODE_INSIDE (3)

Node はこの Range より後に始まり、前に終わる。すなわち、ノードは完全にこの Range に選択されている。

警告: このメソッドは Gecko 1.9 から削除され、唯一実装していた Firefox の将来のバージョンでは存在しません。使用可能な限り早く Range.compareBoundaryPoints() に切り替えるべきです。

以下の関数が置き換えの関数として使用できます。

js
function rangeCompareNode(range, node) {
  const nodeRange = node.ownerDocument.createRange();
  try {
    nodeRange.selectNode(node);
  } catch (e) {
    nodeRange.selectNodeContents(node);
  }
  const nodeIsBefore =
    range.compareBoundaryPoints(Range.START_TO_START, nodeRange) === 1;
  const nodeIsAfter =
    range.compareBoundaryPoints(Range.END_TO_END, nodeRange) === -1;

  if (nodeIsBefore && !nodeIsAfter) return 0;
  if (!nodeIsBefore && nodeIsAfter) return 1;
  if (nodeIsBefore && nodeIsAfter) return 2;

  return 3;
}

構文

js
compareNode(referenceNode)

引数

referenceNode

この Range と比較する Node です。

返値

Node の位置を示す定数。

js
range = document.createRange();
range.selectNode(document.getElementsByTagName("div").item(0));
returnValue = range.compareNode(document.getElementsByTagName("p").item(0));

メモ

このメソッドは廃止されました。W3C DOM Range.compareBoundaryPoints() メソッドを使用しましょう。

仕様書

このメソッドは標準ではないため、どの仕様にも属しません。

ブラウザーの互換性

BCD tables only load in the browser

関連情報