HTTP/2 301
content-length: 162
content-type: text/html
date: Tue, 14 Oct 2025 18:32:42 GMT
location: https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition
server: nginx
strict-transport-security: max-age=60; includeSubDomains
via: 1.1 google
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
HTTP/2 200
content-type: text/html
x-guploader-uploadid: AAwnv3J2mUz4G6yP38e7YaJ2w5ztiylVPDZUVNzHVvAfsBnC_0S3BsQhN9xgox95cj3cKyQh
cache-control: public, max-age=3600
expires: Tue, 14 Oct 2025 19:32:43 GMT
last-modified: Tue, 14 Oct 2025 01:06:29 GMT
etag: W/"cbc73fe4d4329864a9ff602f5ed7b967"
x-goog-generation: 1760403989557446
x-goog-metageneration: 1
x-goog-stored-content-encoding: identity
x-goog-stored-content-length: 145012
x-goog-meta-goog-reserved-file-mtime: 1760402419
x-goog-hash: crc32c=gYkndg==, md5=y8c/5NQymGSp/2AvXte5Zw==
x-goog-storage-class: STANDARD
accept-ranges: none
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
alt-svc: clear
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
strict-transport-security: max-age=63072000
content-security-policy: default-src 'self'; script-src 'report-sample' 'self' 'wasm-unsafe-eval' https://www.google-analytics.com/analytics.js https://www.googletagmanager.com/gtag/js assets.codepen.io production-assets.codepen.io https://js.stripe.com 'sha256-XNBp89FG76amD8BqrJzyflxOF9PaWPqPqvJfKZPCv7M=' 'sha256-YCNoU9DNiinACbd8n6UPyB/8vj0kXvhkOni9/06SuYw=' 'sha256-PZjP7OR6mBEtnvXIZfCZ5PuOlxoDF1LDZL8aj8c42rw='; script-src-elem 'report-sample' 'self' 'wasm-unsafe-eval' https://www.google-analytics.com/analytics.js https://www.googletagmanager.com/gtag/js assets.codepen.io production-assets.codepen.io https://js.stripe.com 'sha256-XNBp89FG76amD8BqrJzyflxOF9PaWPqPqvJfKZPCv7M=' 'sha256-YCNoU9DNiinACbd8n6UPyB/8vj0kXvhkOni9/06SuYw=' 'sha256-PZjP7OR6mBEtnvXIZfCZ5PuOlxoDF1LDZL8aj8c42rw='; style-src 'report-sample' 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; connect-src 'self' developer.allizom.org bcd.developer.allizom.org bcd.developer.mozilla.org updates.developer.allizom.org updates.developer.mozilla.org https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com https://incoming.telemetry.mozilla.org https://observatory-api.mdn.allizom.net https://observatory-api.mdn.mozilla.net https://api.github.com/search/issues stats.g.doubleclick.net https://api.stripe.com; font-src 'self'; frame-src 'self' interactive-examples.mdn.mozilla.net interactive-examples.mdn.allizom.net mdn.github.io live-samples.mdn.mozilla.net live-samples.mdn.allizom.net *.mdnplay.dev *.mdnyalp.dev *.play.test.mdn.allizom.net https://v2.scrimba.com https://scrimba.com jsfiddle.net www.youtube-nocookie.com codepen.io survey.alchemer.com https://js.stripe.com; img-src 'self' data: *.githubusercontent.com *.googleusercontent.com *.gravatar.com mozillausercontent.com firefoxusercontent.com profile.stage.mozaws.net profile.accounts.firefox.com developer.mozilla.org mdn.dev interactive-examples.mdn.mozilla.net interactive-examples.mdn.allizom.net wikipedia.org upload.wikimedia.org https://mdn.github.io/shared-assets/ https://mdn.dev/ https://*.google-analytics.com https://*.googletagmanager.com www.gstatic.com; manifest-src 'self'; media-src 'self' archive.org videos.cdn.mozilla.net https://mdn.github.io/shared-assets/; child-src 'self'; worker-src 'self';
x-frame-options: DENY
origin-trial: AxVILwizhbMjxFeHOn1P3R8niO1RJY/smaK4B4d1rLzc1gTaxtXMSaTi+FoigYgCw40uFRDwFcEAeqDR+vVLOW4AAABfeyJvcmlnaW4iOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZyIsImZlYXR1cmUiOiJQcml2YXRlQXR0cmlidXRpb25WMiIsImV4cGlyeSI6MTc0MjA3OTYwMH0=
x-cloud-trace-context: ef00f34b74b5d89556c69e3b7fefaf5f
date: Tue, 14 Oct 2025 18:32:44 GMT
server: Google Frontend
via: 1.1 google
vary: Accept-Encoding
content-encoding: gzip
x-cache: miss
Node: compareDocumentPosition() method - Web APIs | MDN
compareDocumentPosition(otherNode)
otherNode
The Node
for which position should be reported, relative to the node.
An integer value representing otherNode
's position relative to node
as a bitmask combining the
following constant properties of Node
:
Node.DOCUMENT_POSITION_DISCONNECTED
(1
)
Both nodes are in different documents or different trees in the same document.
Node.DOCUMENT_POSITION_PRECEDING
(2
)
otherNode
precedes the node in either a pre-order depth-first traversal of a tree containing both (e.g., as an ancestor or previous sibling or a descendant of a previous sibling or previous sibling of an ancestor) or (if they are disconnected) in an arbitrary but consistent ordering.
Node.DOCUMENT_POSITION_FOLLOWING
(4
)
otherNode
follows the node in either a pre-order depth-first traversal of a tree containing both (e.g., as a descendant or following sibling or a descendant of a following sibling or following sibling of an ancestor) or (if they are disconnected) in an arbitrary but consistent ordering.
Node.DOCUMENT_POSITION_CONTAINS
(8
)
otherNode
is an ancestor of the node.
Node.DOCUMENT_POSITION_CONTAINED_BY
(16
)
otherNode
is a descendant of the node.
Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
(32
)
The result relies upon arbitrary and/or implementation-specific behavior and is not guaranteed to be portable.
Zero or more bits can be set, depending on which scenarios apply. For example, if
otherNode
is located earlier in the document and
contains the node on which compareDocumentPosition()
was
called, then both the DOCUMENT_POSITION_CONTAINS
and
DOCUMENT_POSITION_PRECEDING
bits would be set, producing a value of 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>");
}
Note:
Because the result returned by compareDocumentPosition()
is a bitmask,
the bitwise AND operator
must be used for meaningful results.