Метод 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 |
См. также
© 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