Range: compareNode()-Methode

Veraltet: Diese Funktion wird nicht mehr empfohlen. Obwohl einige Browser sie möglicherweise noch unterstützen, könnte sie bereits aus den relevanten Webstandards entfernt worden sein, in Kürze entfernt werden oder nur noch aus Kompatibilitätsgründen bestehen. Vermeiden Sie die Verwendung und aktualisieren Sie vorhandenen Code, falls möglich; siehe die Kompatibilitätstabelle am Ende dieser Seite, um Ihre Entscheidung zu unterstützen. Beachten Sie, dass diese Funktion jederzeit aufhören könnte zu funktionieren.

Nicht standardisiert: Diese Funktion ist nicht standardisiert. Wir raten davon ab, nicht-standardisierte Funktionen auf produktiven Webseiten zu verwenden, da sie nur von bestimmten Browsern unterstützt werden und sich in Zukunft ändern oder entfernt werden können. Unter Umständen kann sie jedoch eine geeignete Option sein, wenn es keine standardisierte Alternative gibt.

Die compareNode()-Methode des Range-Interfaces gibt eine Konstante zurück, die die Position des Node angibt.

Syntax

js
compareNode(referenceNode)

Parameter

referenceNode

Der Node, der mit dem Range verglichen wird.

Rückgabewert

Eine Konstante, die die Position des Node angibt. Die möglichen Werte sind:

NODE_BEFORE (0)

Knoten beginnt vor dem Range.

NODE_AFTER (1)

Knoten endet nach dem Range.

NODE_BEFORE_AND_AFTER (2)

Knoten beginnt vor und endet nach dem Range.

NODE_INSIDE (3)

Knoten beginnt nach und endet vor dem Range, d.h. der Knoten ist vollständig durch den Range ausgewählt.

Beispiele

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

Anmerkungen

Diese Methode ist nicht standardisiert. Die folgende Funktion kann als Ersatz verwendet werden:

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

Spezifikationen

Diese Methode ist nicht standardisiert und daher nicht Teil einer Spezifikation.

Browser-Kompatibilität

Siehe auch