Spec-Zone.ru › Web APIs

Метод Range: compareNode()

Устаревшее: Данная функция больше не рекомендуется. Хотя некоторые браузеры могут её всё ещё поддерживать, она, возможно, уже удалена из соответствующих веб-стандартов, находится в процессе удаления или сохранена только для совместимости. Избегайте её использования и, если возможно, обновите существующий код; обратитесь к таблице совместимости внизу этой страницы для принятия решения. Имейте в виду, что эта функция может перестать работать в любой момент.

Нестандартная: Эта функция нестандартна и не является частью стандартов. Не используйте её на сайтах, работающих с Вебом, так как она не будет работать для каждого пользователя. Также могут быть большие несовместимости между реализациями и поведение может измениться в будущем.

Метод Range.compareNode() возвращает константу, указывающую положение Node.

Возможные значения:

NODE_BEFORE (0)

Узел начинается перед областью

NODE_AFTER (1)

Узел заканчивается после области

NODE_BEFORE_AND_AFTER (2)

Узел начинается перед и заканчивается после области

NODE_INSIDE (3)

Узел начинается после и заканчивается перед областью, т.е. узел полностью выбран областью.

Предупреждение: Этот метод был удалён из Gecko 1.9 и не будет существовать в будущих версиях Firefox, который был единственным браузером, его реализовавшим; как можно скорее переключитесь на Range.compareBoundaryPoints().

Следующая функция может быть использована в качестве замены:

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

Синтаксис

compareNode(referenceNode)

Параметры

referenceNode

Узел Node для сравнения с Range.

Возвращаемое значение

Константа, указывающая положение Node.

Примеры

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

Примечания

Этот метод устарел; следует использовать метод W3C DOM Range.compareBoundaryPoints().

Спецификации

Этот метод не является стандартным и поэтому не входит в состав какой-либо спецификации.

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
compareNode 1–45 Нет 1–3 15–32 3 18–45 Нет 14–32 1 1.0–5.0 4.4–45

См. также

  • Индекс интерфейсов DOM

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Range/compareNode

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API