Método compareDocumentPosition() do XML DOM

Definição e uso

compareDocumentPosition() Comparar a posição de dois nós no domínio DOM (documento).

Sintaxe

nodeObject.compareDocumentPosition(node)

Parâmetros

Parâmetros Descrição
node Obrigatório. Objeto Node. Especifica o nó com o qual o nó atual deve ser comparado.

Detalhes técnicos

Versão DOM: Core Level 3 Node Object
Retorno:

Números, que representam a posição relativa dos nós. Os valores possíveis são:

  • 1 - Não há relação, os dois nós não pertencem ao mesmo documento.
  • 2 - O nó especificado está antes do nó atual.
  • 4 - O nó especificado segue o nó atual.
  • 8 - O nó especificado contém o nó atual.
  • 16 - O nó especificado está contido no nó atual.
  • 32 - O nó especificado e o nó atual não compartilham o mesmo nó contenedor, ou os dois nós são diferentes atributos do mesmo nó.

Atenção:O valor retornado também pode ser uma combinação de valores. Por exemplo, o valor retornado 20 indica que o nó especificado está contido no nó atual (16) e segue o nó atual (4).

Exemplo

O código abaixo carregará "books.xml" no xmlDoc e comparará a posição de dois nós (o primeiro e o terceiro elemento <book>) na estrutura DOM:

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
   if (this.readyState == 4 && this.status == 200) {
       myFunction(this);
   }
};
xhttp.open("GET", "books.xml", true);
xhttp.send();
function myFunction(xml) {
    var xmlDoc = xml.responseXML;
    var x = xmlDoc.getElementsByTagName('book')[0];
    var y = xmlDoc.getElementsByTagName('book')[2];
    document.getElementById("demo").innerHTML =
    x.compareDocumentPosition(y);
}

Experimente pessoalmente

A maioria dos navegadores considera espaços em branco ou novas linhas como nós de texto, enquanto o IE 9 e versões anteriores não o fazem. Portanto, no exemplo acima, a maioria dos navegadores produzirá 4, enquanto o IE 9 e versões anteriores produzirão 2.

Suporte a Navegadores

Chrome Edge Firefox Safari Opera
Chrome Edge Firefox Safari Opera
Suporte Suporte Suporte Suporte Suporte

Todos os navegadores principais suportam o método compareDocumentPosition().

Observação:Os navegadores Internet Explorer 9 e anteriores não suportam este método.