Range:compareNode() 方法

已棄用:此特性不再推薦。雖然某些瀏覽器可能仍然支援它,但它可能已經從相關的網路標準中刪除,可能正在刪除過程中,或者可能僅為相容性目的而保留。請避免使用它,如果可能,請更新現有程式碼;請參閱本頁底部的相容性表格以指導您的決策。請注意,此特性可能隨時停止工作。

非標準:此特性未標準化。我們不建議在生產環境中使用非標準特性,因為它們瀏覽器支援有限,並且可能會更改或被移除。但是,在沒有標準選項的特定情況下,它們可以是合適的替代方案。

Range 介面的 compareNode() 方法返回一個常量,指示 Node 的位置。

語法

js
compareNode(referenceNode)

引數

referenceNode

要與 Range 比較的 Node

返回值

指示 Node 位置的常量。可能的值是:

NODE_BEFORE (0)

節點在 Range 之前開始

NODE_AFTER (1)

節點在 Range 之後結束

NODE_BEFORE_AND_AFTER (2)

節點在 Range 之前開始,並在 Range 之後結束

NODE_INSIDE (3)

節點在 Range 之後開始,並在 Range 之前結束,也就是說,節點被 Range 完全選中。

示例

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

注意

此方法不是標準方法。可以使用以下函式作為替代。

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;
}

規範

此方法不是標準方法,因此不屬於任何規範。

瀏覽器相容性

另見