Узел: метод compareDocumentPosition()
Базовая линия Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
Метод compareDocumentPosition() интерфейса Node сообщает о позиции узла-аргумента относительно узла, на котором он вызван.
Синтаксис
compareDocumentPosition(otherNode)
Параметры
Возвращаемое значение
Целое числовое значение, представляющее позицию otherNode относительно node в виде побитовой маски, объединяющей следующие константные свойства узла Node:
Node.DOCUMENT_POSITION_DISCONNECTED(1)-
Оба узла находятся в разных документах или разных деревьях в одном документе.
Node.DOCUMENT_POSITION_PRECEDING(2)-
otherNodeпредшествует узлу в процессе последовательного обхода дерева, содержащем оба узла (например, как предок или предыдущий сосед, или потомок предыдущего соседа, или предыдущий сосед предка), или (если они отключены) в произвольном, но согласованном порядке. Node.DOCUMENT_POSITION_FOLLOWING(4)-
otherNodeследует за узлом в процессе последовательного обхода дерева, содержащем оба узла (например, как потомок или следующий сосед, или потомок следующего соседа, или следующий сосед предка), или (если они отключены) в произвольном, но согласованном порядке. Node.DOCUMENT_POSITION_CONTAINS(8)-
otherNodeявляется предком узла. Node.DOCUMENT_POSITION_CONTAINED_BY(16)-
otherNodeявляется потомком узла. Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC(32)-
Результат зависит от произвольного и/или специфичного для реализации поведения и не гарантирует переносимость.
В зависимости от применяемых сценариев может быть установлено ноль или более битов. Например, если otherNode расположен раньше в документе и содержит узел, на котором был вызван compareDocumentPosition(), то будут установлены и биты DOCUMENT_POSITION_CONTAINS, и DOCUMENT_POSITION_PRECEDING, что даст значение 10 (0x0A).
Пример
const head = document.head;
const body = document.body;
if (head.compareDocumentPosition(body) & Node.DOCUMENT_POSITION_FOLLOWING) {
console.log("Well-formed document");
} else {
console.error("<head> is not before <body>");
}
Примечание: Поскольку результат, возвращаемый compareDocumentPosition(), является побитовой маской, для получения осмысленных результатов необходимо использовать оператор побитового И.
Спецификации
| Спецификация |
|---|
| DOM # ref-for-dom-node-comparedocumentposition① |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
compareDocumentPosition |
2 | 12 | 1 | ≤12.1 | 4 | 18 | 4 | ≤12.1 | 3.2 | 1.0 | ≤37 |
См. также
© 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/Node/compareDocumentPosition