Modelo de objeto de documento - Document Object Model

Modelo de Objeto de Documento
DOM-model.svg
Exemplo de hierarquia DOM em um documento HTML
Publicado pela primeira vez 1 ° de outubro de 1998 ; 23 anos atrás ( 01/10/1998 )
Última versão DOM4
19 de novembro de 2015 ; 5 anos atrás ( 19/11/2015 )
Organização World Wide Web Consortium , WHATWG
Padrões básicos WHATWG DOM Living Standard
W3C DOM4
Abreviação DOM

O Document Object Model ( DOM ) é uma interface independente de plataforma cruzada e de linguagem que trata um documento XML ou HTML como uma estrutura de árvore em que cada é um objeto que representa uma parte do documento. O DOM representa um documento com uma árvore lógica. Cada ramo da árvore termina em um nó e cada nó contém objetos. Os métodos DOM permitem acesso programático à árvore; com eles pode-se mudar a estrutura, estilo ou conteúdo de um documento. Os nós podem ter manipuladores de eventos anexados a eles. Depois que um evento é disparado, os manipuladores de eventos são executados.

A principal padronização do DOM foi realizada pelo World Wide Web Consortium (W3C), que desenvolveu uma recomendação pela última vez em 2004. O WHATWG assumiu o desenvolvimento do padrão, publicando-o como um documento vivo . O W3C agora publica instantâneos estáveis ​​do padrão WHATWG.

História

A história do Document Object Model está entrelaçada com a história da " guerra dos navegadores " no final dos anos 1990 entre o Netscape Navigator e o Microsoft Internet Explorer , bem como com a do JavaScript e JScript , as primeiras linguagens de script a serem amplamente implementadas no Mecanismos de JavaScript de navegadores da web .

O JavaScript foi lançado pela Netscape Communications em 1995 no Netscape Navigator 2.0. O concorrente da Netscape, a Microsoft , lançou o Internet Explorer 3.0 no ano seguinte com uma reimplementação do JavaScript chamada JScript. JavaScript e JScript permitem que os desenvolvedores da web criem páginas da web com interatividade do lado do cliente . Os recursos limitados para detectar eventos gerados pelo usuário e modificar o documento HTML na primeira geração dessas linguagens eventualmente se tornaram conhecidos como "DOM Nível 0" ou "Legacy DOM". Nenhum padrão independente foi desenvolvido para DOM Nível 0, mas foi parcialmente descrito nas especificações para HTML 4 .

O DOM legado era limitado nos tipos de elementos que podiam ser acessados. Os elementos de formulário , link e imagem podem ser referenciados com um nome hierárquico que começa com o objeto de documento raiz. Um nome hierárquico pode fazer uso dos nomes ou do índice sequencial dos elementos percorridos. Por exemplo, um elemento de entrada de formulário pode ser acessado como document.formName.inputNameou document.forms[0].elements[0].

O Legacy DOM habilitou a validação de formulário do lado do cliente e interatividade de interface simples, como a criação de dicas de ferramentas .

Em 1997, a Netscape e a Microsoft lançaram a versão 4.0 do Netscape Navigator e do Internet Explorer respectivamente, adicionando suporte para a funcionalidade Dynamic HTML (DHTML), permitindo alterações em um documento HTML carregado. O DHTML exigia extensões para o objeto de documento rudimentar que estava disponível nas implementações do Legacy DOM. Embora as implementações do Legacy DOM fossem amplamente compatíveis, já que JScript era baseado em JavaScript, as extensões DHTML DOM foram desenvolvidas em paralelo por cada fabricante de navegador e permaneceram incompatíveis. Essas versões do DOM ficaram conhecidas como "DOM intermediário".

Após a padronização do ECMAScript , o W3C DOM Working Group começou a esboçar uma especificação DOM padrão. A especificação completa, conhecida como "DOM Nível 1", tornou-se uma recomendação W3C no final de 1998. Em 2005, grandes partes do W3C DOM eram bem suportadas por navegadores habilitados para ECMAScript comuns, incluindo o Microsoft Internet Explorer versão 6 (de 2001), Navegadores baseados em Opera , Safari e Gecko (como Mozilla , Firefox , SeaMonkey e Camino ).

Padrões

WHATWG DOM

O W3C DOM Working Group publicou sua recomendação final e posteriormente se desfez em 2004. Os esforços de desenvolvimento migraram para o WHATWG , que continua a manter um padrão de vida. Em 2009, o grupo de Aplicativos da Web reorganizou as atividades do DOM no W3C. Em 2013, devido à falta de progresso e ao lançamento iminente do HTML5 , a especificação DOM Nível 4 foi reatribuída ao HTML Working Group para agilizar sua conclusão. Enquanto isso, em 2015, o grupo de Aplicativos da Web foi dissolvido e a administração do DOM passou para o grupo da Plataforma da Web. Começando com a publicação do DOM Nível 4 em 2015, o W3C cria novas recomendações com base em instantâneos do padrão WHATWG.

  • O DOM Nível 1 forneceu um modelo completo para um documento HTML ou XML inteiro , incluindo os meios para alterar qualquer parte do documento.
  • O DOM Nível 2 foi publicado no final de 2000. Ele introduziu a getElementByIdfunção, bem como um modelo de evento e suporte para namespaces XML e CSS.
  • DOM Nível 3, publicado em abril de 2004, adicionou suporte para XPath e manipulação de eventos de teclado , bem como uma interface para serializar documentos como XML.
  • DOM Nível 4 foi publicado em 2015. É um instantâneo do padrão de vida WHATWG.

Formulários

Navegadores da web

Para renderizar um documento como uma página HTML, a maioria dos navegadores da web usa um modelo interno semelhante ao DOM . Os nós de cada documento são organizados em uma estrutura de árvore , chamada de árvore DOM , com o nó superior denominado "Objeto de documento". Quando uma página HTML é renderizada em navegadores, o navegador baixa o HTML na memória local e o analisa automaticamente para exibir a página na tela. No entanto, o DOM não precisa necessariamente ser representado como uma árvore, e alguns navegadores usaram outros modelos internos.

JavaScript

Quando uma página da web é carregada, o navegador cria um Document Object Model da página, que é uma representação orientada a objetos de um documento HTML que atua como uma interface entre o JavaScript e o próprio documento. Isso permite a criação de páginas da web dinâmicas , porque dentro de uma página, o JavaScript pode:

  • adicionar, alterar e remover qualquer um dos elementos e atributos HTML
  • alterar qualquer um dos estilos CSS
  • reagir a todos os eventos existentes
  • criar novos eventos

Implementações

Como o DOM oferece suporte à navegação em qualquer direção (por exemplo, pai e irmão anterior) e permite modificações arbitrárias, uma implementação deve pelo menos armazenar em buffer o documento que foi lido até agora (ou alguma forma analisada dele).

Mecanismos de layout

Os navegadores da Web contam com mecanismos de layout para analisar HTML em um DOM. Alguns mecanismos de layout, como Trident / MSHTML , estão associados principalmente ou exclusivamente a um navegador específico, como o Internet Explorer. Outros, incluindo Blink , WebKit e Gecko , são compartilhados por vários navegadores, como Google Chrome , Opera , Safari e Firefox . Os diferentes mecanismos de layout implementam os padrões DOM em vários graus de conformidade.

Bibliotecas

Implementações DOM:

  • libxml2
  • MSXML
  • Xerces é uma coleção de implementações DOM escritas em C ++, Java e Perl
  • xml.dom para Python
  • XML para <SCRIPT> é uma implementação DOM baseada em JavaScript
  • PHP.Gt DOM é uma implementação DOM do lado do servidor baseada em libxml2 e traz compatibilidade DOM nível 4 para a linguagem de programação PHP
  • Domino é uma implementação de DOM do lado do servidor (Node.js) baseada no dom.js. do Mozilla. Domino é usado na pilha MediaWiki com o Editor Visual.
  • SimpleHtmlDom é um modelo de objeto de documento HTML simples em C #, que pode gerar string HTML programaticamente.

APIs que expõem implementações DOM:

  • JAXP (Java API para XML Processing) é uma API para acessar provedores DOM
  • Lazarus ( Free Pascal IDE) contém duas variantes do DOM - com formato UTF-8 e ANSI

Ferramentas de inspeção:

Veja também

Referências

Referências gerais

links externos