Introduction

  • Revision slug: Gecko_DOM_Reference/Introduction
  • Revision title: Introduction
  • Revision id: 171893
  • Created:
  • Creator: Davis.peixoto
  • Is current revision? Não
  • コメント /* Testing the DOM API */

Revision Content

{{ DomRef() }}

Esta seção provê uma breve introdução conceitual ao DOM: o que ele é, como ele provê estruturas para documentos HTML e XML, como você pode acessá-lo, e como esta API apresenta informações de referência e exemplos.

O que é o DOM?

O Document Object Model (DOM) é uma interface de programação para documentos HTML e XML. Ele provê uma representação estruturada do documento e define um meio pelo qual a estrutura pode ser acessada por programas permitindo-os alterar a estrutura do documento, estilo e conteúdo. O DOM provê uma representação do documento como um conjunto estruturado de nós e objetos que têm propriedades e métodos. Essencialmente ele conecta páginas de internet a scripts ou linguagens de programação.

Uma página de internet é um documento. Este documento pode ser exibido numa janela de navegador, ou como código-fonte HTML. Mas é o mesmo documento em ambos os casos. O Document Object Model (DOM) provê uma outra forma de representar, armazenar e manipular o mesmo documento. O DOM é uma representação orientada a objeto completa da página, e pode ser modificada com uma linguagem de script como o JavaScript.

O padrão W3C DOM constitui as bases para a implementação do DOM nos mais modernos navegadores. Muitos navegadores oferecem extensões que vão além do padrão W3C, portanto a cautela deve ser exercida quando do seu uso em páginas onde os documentos podem ser acessados por vários navegadores com diferentes implementações do DOM.

Por exemplo, o DOM W3C especifica que o método getElementsByTagName no código abaixo deve retornar uma lista com todos os elementos <P> contidos no documento:

paragraphs = document.getElementsByTagName("P");
// paragraphs[0] é o primeiro elemento <p>
// paragraphs[1] é o segundo elemento <p>, etc.
alert(paragraphs[0].nodeName);

Todas as propriedades, métodos, e eventos disponíveis para manipular e criar páginas estão organizados em objetos (por exemplo, o objeto document representa o próprio documento, o objeto table implementa a interface DOM HTMLTableElement para acessar tabelas HTML, e assim por diante). Esta documentação dispõe uma referência objeto a objeto para o DOM implementado nos navegadores baseados no Gecko.

DOM e JavaScript

O rápido exemplo acima, parecido com a maioria dos exemplos desta referência, é JavaScript. Ou seja, ele foi escrito em JavaScript, mas ele usa o DOM para acessar o documento e seus elementos. O DOM não é uma linguagem de programação, mas sem ele, a linguagem JavaScript não teria nenhum modelo ou noção de páginas web, páginas XML e elementos com os quais ela geralmente lida. Todo elemento num documento—o documento como um todo, o cabeçalho, tabelas dentro do documento, cabeçalhos de tabelas, o texto dentro das células— faz parte do document object model para aquele documento, portanto eles podem ser acessados e manipulados fazendo-se uso do DOM e de uma linguagem de scripting como o JavaScript.

No início, JavaScript e o DOM eram fortemente ligados, mas eventualmente evoluíram em entidades separadas. O conteúdo da página é armazenado no DOM e pode ser acessado e manipulado via JavaScript, portanto nós podemos escrever esta equação aproximada:

API(web ou página XML) = DOM + JS(linguagem de scripting)

O DOM foi desenvolvido para ser independente de qualquer linguagem de programação em particular, tornando a representação estrutural do documento para uma única API consistente. Embora nos concentramos exclusivamente em JavaScript nesta documentação de referência, implementações do DOM por ser construídas para qualquer linguagem, como este exemplo em Python demonstra:

# Exemplo de DOM em Python
import xml.dom.minidom as m
doc = m.parse("C:\\Projects\\Py\\chap1.xml");
doc.nodeName # propriedade do DOM para o objeto document;
p_list = doc.getElementsByTagName("para");

Como eu acesso o DOM?

Você não tem que fazer nada de especial para começar a usar o DOM. Navegadores diferentes tem implementações diferentes do DOM, e estas implementações exibem graus de conformidade variantes em relação ao verdadeiro padrão DOM (um tema que tentamos evitar nesta documentação), mas cada navegador usa algum document object model para tornar as páginas acessíveis para script.

Quando você cria um script–quer seja um elemento in-line <script> or através de uma instrução de carregamento externo–você pode imediatamente começar a fazer uso da API para os elementos document ou window para manipular o próprio documento ou para acessar os filhos do documento, que são os vários elementos na página. Sua programação em DOM pode ser algo simples como o seguinte código, que mostra uma mensagem atráves da função alert() do objeto window, ou pode usar métodos do DOM mais sofisticados para realmente criar novos conteúdos como no exemplo maior mais abaixo.

<body onload="window.alert('welcome to my home page!');">

Aparte do elemento <script> no qual o Javascript é definido, este Javascript define uma função a ser executada quando o documento é carregado (e quando todo o DOM está disponível para uso). Esta função cria um novo elemento H1, adiciona texto ao elemento e então adiciona o H1 à árvore deste documento.

<html>
<head>
<script>
// executa esta função quando o documento está carregado
window.onload = function() {
   // cria um par de elementos numa 
   // página HTML outrora vazia
   heading = document.createElement("h1");
   heading_text = document.createTextNode("Big Head!");
   heading.appendChild(heading_text);
   document.body.appendChild(heading);
}
</script>
</head>
<body>
</body>
</html>

Tipos de dados importantes

Esta referência tenta descrever os vários objetos e tipos da maneira mais simples quanto possível. Mas há uma série de diferentes de tipos de dados sendo passados pela API dos quais você deve estar ciente. Por uma questão de simplicidade, exemplos de sintaxe nesta referência da API tipicamente se referem aos nós como elements, a arrays de nós como nodeLists (ou simplesmente elements), e a atributos dos nós como attributes.

A seguinte tabela descreve brevemente estes tipos de dados.

The following table briefly describes these data types.

document Quando um membro retorna um objeto do tipo document (por exemplo, a propriedade ownerDocument de um elemento retorna o document ao qual pertence), este objeto é o próprio objeto document raiz. O capítulo Referência document do DOM descreve o objeto document.
element element se refere a um elemento ou a um nó do tipo element retornado por um membro da API do DOM. Ai invés de dizer, por exemplo, que o método document.createElement() retorna uma referência de objeto para um node, nós apenas dizemos que o método retorna o element que acabou de ser criado no DOM. Objetos element implementam a interface DOM Element e também a interface mais básica Node, ambas que estão incluídas juntas nesta referência.
nodeList Um nodeList é um array de elementos, como o tipo que é retornado pelo método document.getElementsByTagName(). Itens em uma nodeList são acessados pelo índice em qualquer uma das duas formas:
  • list.item(1)
  • list{{ mediawiki.external("1") }}

Estas duas formas são equivalentes. Na primeira, item() é um único método do objeto nodeList. A última usa uma típica sintaxe de array para buscar o segundo item na lista.

attribute Quando um attribute é retornado por um membro (por exemplo, pelo método createAttribute()), ele é uma referência de objeto que expõe uma interface especial (embora pequena) para atributos. Atributos são nós no DOM assim como os elementos o são, embora você raramente pode usá-los como tal.
namedNodeMap Um namedNodeMap é como um array, mas os itens são acessados por nome ou índice, embora este último caso é meramente uma conveniência de enumeração, uma vez que estão em nenhuma ordem especial na lista. Um namedNodeMap tem um método item() para este propósito, e você também pode adicionar e remover itens de um namedNodeMap.

Interfaces DOM

Este guia é sobre os objetos e as verdadeiras coisas que você pode usar para manipular a hierarquia do DOM. É muitas vezes uma questão de indiferença que o objeto representando o elemento HTML form pegue sua propriedade name da interface HTMLFormElement mas sua propriedade className da própria interface HTMLElement. Em ambos os casos, a propriedade que você quer está simplesmente no objeto form.

Mas a relação entre objetos e interfaces que eles implementam no DOM podem ser confusos, e portanto esta seção tenta dizer um pouco mais sobre as interfaces reais da especificação do DOM e como elas se tornam disponíveis.

Interfaces e Objetos

Muitos objetos se valem de muitas interfaces diferentes. O objeto table, por exemplo, implementa uma Interface do elemento HTML Table especializada, que inclui métodos como createCaption e insertRow. Mas desde que ele também é um elemento HTML, table implementa a interface Element descrita no capítulo Referência de element do DOM. E finalmente, com um elemento HTML também é, assim como o DOM lhe considera, um nó em uma árvore de nós que criam um modelo de objeto para uma página web ou uma página XML, o elemento table também implementa a mais básica interface Node, a partir da qual o Element deriva.

Quando você tem uma referência para um objeto table, como no exemplo a seguir, você rotineiramente usa todas as três interfaces indiferentemente no objeto, talvez sem saber.

var table = document.getElementById("table");
var tableAttrs = table.attributes; // Node/Element interface
for(var i = 0; i < tableAttrs.length; i++){
  // HTMLTableElement interface: border attribute
  if(tableAttrs[i].nodeName.toLowerCase() == "border")
    table.border = "1"; 
}
// HTMLTableElement interface: summary attribute
table.summary = "note: increased border";

Interfaces do núcleo do DOM

Esta seção lista algumas das interfaces mais comumente usadas no DOM. A idéia não é descrever aqui o que estas APIs fazem, mas sim te dar uma idéia dos tipos de métodos e propriedades que você verá muitas vezes enquanto você usa o DOM. Estas APIs comuns são usadas nos exemplos mais extensos no capítulo Exemplos de DOM no final deste livro.

Os objetos document e window são os objetos cuja interface você geralmente vai usar na maioria das vezes na programação com DOM. Em termos simples, o objeto window representa algo como o navegador, e o objeto document é a raiz do próprio documento. Element descende da interface genérica Node, e estas duas juntas fornecem muitos dos métodos e propriedades que você usa em elementos individuais. Estes elementos também podem ter interfaces específicas para lidar com os tipos de dados que eles contém, como no exemplo do objeto table na seção anterior.

A seguir está uma breve lista das APIs comuns para scripting usando o DOM em web e páginas XML.

Testando a API do DOM

Este documento fornece amostras para cada interface que você pode usar em seu próprio desenvolvimento web. Em alguns casos, as amostras são páginas HTML completas, com o acesso ao DOM em um elemento <script>, a interface (por exemplo, botões) necessária para disparar o script em um form, e os elementos HTML sobre os quais o DOM opera listados. Quando for este o caso, você pode copiar a colar o conteúdo do exemplo dentro de um novo arquivo HTML, salvá-lo, e executar o exemplo em um navegador.

Há casos, no entanto, que os exemplos são mais concisos. Para executar exemplos que apenas demonstram a relação básica da interface para com os elementos HTML, você pode criar uma página de teste na qual as interfaces podem facilmente ser acessadas por scripts. A seguinte página web, bem simples, fornece um elemento <script> no seu cabeçalho onde você pode colocar funções que testam a interface, alguns poucos elementos HTML com atributos que você pode remover, criar, ou alterar, e a interface web necessária para chamar aquelas funções pelo navegador.

Você pode usar esta página de teste ou criar uma similar a fim de testar as interfaces do DOM nas quais você está interessado e ver como elas funcionam na plataforma do navegador. Você pode atualizar o conteúdo da função test() como necessário, criar mais botões, ou adicionar elementos conforme a necessidade.

<html>
<head>
<title>DOM Tests</title>
<script type="application/x-javascript">
function setBodyAttr(attr,value){
  if(document.body) eval('document.body.'+attr+'="'+value+'"');
  else notSupported();
}
</script>
</head> 
<body>
<div style="margin: .5in; height="400""> 
<p><b><tt>text</tt> color</p> 
<form> 
<select onChange="setBodyAttr('text',
    this.options[this.selectedIndex].value);"> 
<option value="black">black 
<option value="darkblue">darkblue 
</select>
 <p><b><tt>bgColor</tt></p>
 <select onChange="setBodyAttr('bgColor',
    this.options[this.selectedIndex].value);"> 
<option value="white">white 
<option value="lightgrey">gray
 </select>
<p><b><tt>link</tt></p> 
<select onChange="setBodyAttr('link',
     this.options[this.selectedIndex].value);">
<option value="blue">blue
<option value="green">green
</select>  <small>
     <a href="http://www.brownhen.com/dom_api_top.html" id="sample">
(sample link)</a></small><br>
</form>
<form>
  <input type="button" value="version" onclick="ver()" />
</form>
</div>
</body>
</html>

Para testar muitas interfaces em uma única página–por exemplo, uma "suite" de propriedades que afetam as cores de sua página web–você pode criar uma página de testes similar com um completo console de botões, campos de texto e outros elementos HTML. A seguinte captura de tela pode te dar alguma idéia de como as interfaces podem estar agrupadas para teste.

Image:DOM_Ref_Introduction_to_the_DOM.gif
Figure 0.1 Amostra de uma página de teste do DOM

Neste exemplo, os menus dropdown atualizam dinamicamente aspectos da página que são acessíveis ao DOM como a cor de fundo (bgColor), a cor dos hyperlinks (aLink), e a cor do texto (text). Contudo você criar suas próprias páginas de teste e testar as interfaces ao passo que você lê sobre elas é uma parte importante do aprendizado de como usar o DOM efetivamente.

{{ languages( { "en": "en/Gecko_DOM_Reference/Introduction", "fr": "fr/R\u00e9f\u00e9rence_du_DOM_Gecko/Introduction", "ja": "ja/Gecko_DOM_Reference/Introduction", "pl": "pl/Dokumentacja_Gecko_DOM/Wprowadzenie", "zh-cn": "cn/Gecko_DOM_\u53c2\u8003/\u5165\u95e8", "es": "es/Referencia_DOM_de_Gecko/Introducci\u00f3n" } ) }}

Revision Source

<p>
{{ DomRef() }}
</p><p>Esta seção provê uma breve introdução conceitual ao DOM: o que ele é, como ele provê estruturas para documentos <a href="pt/HTML">HTML</a> e <a href="pt/XML">XML</a>, como você pode acessá-lo, e como esta API apresenta informações de referência e exemplos.
</p>
<h3 id="O_que_.C3.A9_o_DOM.3F" name="O_que_.C3.A9_o_DOM.3F">O que é o DOM?</h3>
<p>O Document Object Model (DOM) é uma interface de programação para documentos HTML e XML. Ele provê uma representação estruturada do documento e define um meio pelo qual a estrutura pode ser acessada por programas permitindo-os alterar a estrutura do documento, estilo e conteúdo. O DOM provê uma representação do documento como um conjunto estruturado de nós e objetos que têm propriedades e métodos. Essencialmente ele conecta páginas de internet a scripts ou linguagens de programação.
</p><p>Uma página de internet é um documento. Este documento pode ser exibido numa janela de navegador, ou como código-fonte HTML. Mas é o mesmo documento em ambos os casos. O Document Object Model (DOM) provê uma outra forma de representar, armazenar e manipular o mesmo documento. O DOM é uma representação orientada a objeto completa da página, e pode ser modificada com uma linguagem de script como o JavaScript.
</p><p>O padrão <a class="external" href="http://www.w3.org/DOM/">W3C DOM</a> constitui as bases para a implementação do DOM nos mais modernos navegadores. Muitos navegadores oferecem extensões que vão além do padrão W3C, portanto a cautela deve ser exercida quando do seu uso em páginas onde os documentos podem ser acessados por vários navegadores com diferentes implementações do DOM.
</p><p>Por exemplo, o DOM W3C especifica que o método <code>getElementsByTagName</code> no código abaixo deve retornar uma lista com todos os elementos <code>&lt;P&gt;</code> contidos no documento:
</p>
<pre>paragraphs = document.getElementsByTagName("P");
// paragraphs[0] é o primeiro elemento &lt;p&gt;
// paragraphs[1] é o segundo elemento &lt;p&gt;, etc.
alert(paragraphs[0].nodeName);
</pre>
<p>Todas as propriedades, métodos, e eventos disponíveis para manipular e criar páginas estão organizados em objetos (por exemplo, o objeto <code>document</code> representa o próprio documento, o objeto <code>table</code> implementa a interface DOM <code>HTMLTableElement</code> para acessar tabelas HTML, e assim por diante). Esta documentação dispõe uma referência objeto a objeto para o DOM implementado nos navegadores baseados no Gecko.
</p>
<h3 id="DOM_e_JavaScript" name="DOM_e_JavaScript">DOM e JavaScript</h3>
<p>O rápido exemplo acima, parecido com a maioria dos exemplos desta referência, é <a href="pt/JavaScript">JavaScript</a>. Ou seja, ele foi <i>escrito</i> em JavaScript, mas ele <i>usa</i> o DOM para acessar o documento e seus elementos. O DOM não é uma linguagem de programação, mas sem ele, a linguagem JavaScript não teria nenhum modelo ou noção de páginas web, páginas XML e elementos com os quais ela geralmente lida. Todo elemento num documento—o documento como um todo, o cabeçalho, tabelas dentro do documento, cabeçalhos de tabelas, o texto dentro das células— faz parte do document object model para aquele documento, portanto eles podem ser acessados e manipulados fazendo-se uso do DOM e de uma linguagem de scripting como o JavaScript.
</p><p>No início, JavaScript e o DOM eram fortemente ligados, mas eventualmente evoluíram em entidades separadas. O conteúdo da página é armazenado no DOM e pode ser acessado e manipulado via JavaScript, portanto nós podemos escrever esta equação aproximada:
</p><p>API(web ou página XML) = DOM + JS(linguagem de scripting)
</p><p>O DOM foi desenvolvido para ser independente de qualquer linguagem de programação em particular, tornando a representação estrutural do documento para uma única API consistente. Embora nos concentramos exclusivamente em JavaScript nesta documentação de referência, implementações do DOM por ser construídas para qualquer linguagem, como este exemplo em Python demonstra:
</p>
<pre class="eval"># Exemplo de DOM em Python
import xml.dom.minidom as m
doc = m.parse("C:\\Projects\\Py\\chap1.xml");
doc.nodeName # propriedade do DOM para o objeto document;
p_list = doc.getElementsByTagName("para");
</pre>
<h3 id="Como_eu_acesso_o_DOM.3F" name="Como_eu_acesso_o_DOM.3F">Como eu acesso o DOM?</h3>
<p>Você não tem que fazer nada de especial para começar a usar o DOM. Navegadores diferentes tem implementações diferentes do DOM, e estas implementações exibem graus de conformidade variantes em relação ao verdadeiro padrão DOM (um tema que tentamos evitar nesta documentação), mas cada navegador usa algum document object model para tornar as páginas acessíveis para script.
</p><p>Quando você cria um script–quer seja um elemento in-line <code>&lt;script&gt;</code> or através de uma instrução de carregamento externo–você pode imediatamente começar a fazer uso da API para os elementos <code><a href="pt/DOM/document">document</a></code> ou <code><a href="pt/DOM/window">window</a></code> para manipular o próprio documento ou para acessar os filhos do documento, que são os vários elementos na página. Sua programação em DOM pode ser algo simples como o seguinte código, que mostra uma mensagem atráves da função <code><a href="pt/DOM/window.alert">alert()</a></code> do objeto <code><a href="pt/DOM/window">window</a></code>, ou pode usar métodos do DOM mais sofisticados para realmente criar novos conteúdos como no exemplo maior mais abaixo.
</p>
<pre class="eval">&lt;body onload="window.alert('welcome to my home page!');"&gt;
</pre>
<p>Aparte do elemento <code>&lt;script&gt;</code> no qual o Javascript é definido, este Javascript define uma função a ser executada quando o documento é carregado (e quando todo o DOM está disponível para uso). Esta função cria um novo elemento H1, adiciona texto ao elemento e então adiciona o <code>H1</code> à árvore deste documento.
</p>
<pre class="eval">&lt;html&gt;
&lt;head&gt;
&lt;script&gt;
// executa esta função quando o documento está carregado
window.onload = function() {
   // cria um par de elementos numa 
   // página HTML outrora vazia
   heading = document.createElement("h1");
   heading_text = document.createTextNode("Big Head!");
   heading.appendChild(heading_text);
   document.body.appendChild(heading);
}
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<h3 id="Tipos_de_dados_importantes" name="Tipos_de_dados_importantes">Tipos de dados importantes</h3>
<p>Esta referência tenta descrever os vários objetos e tipos da maneira mais simples quanto possível. Mas há uma série de diferentes de tipos de dados sendo passados pela API dos quais você deve estar ciente. Por uma questão de simplicidade, exemplos de sintaxe nesta referência da API tipicamente se referem aos nós como <code>element</code>s, a arrays de nós como <code>nodeList</code>s (ou simplesmente <code>element</code>s), e a <code>atributos</code> dos nós como <code>attribute</code>s.
</p><p>A seguinte tabela descreve brevemente estes tipos de dados.
</p><p>The following table briefly describes these data types.
</p>
<table border="1" cellpadding="5" cellspacing="0"> <tbody><tr> <td><code>document</code></td> <td>Quando um membro retorna um objeto do tipo <code>document</code> (por exemplo, a propriedade <b>ownerDocument</b> de um elemento retorna o <code>document</code> ao qual pertence), este objeto é o próprio objeto <code>document</code> raiz. O capítulo <a href="pt/Gecko_DOM_Reference/document">Referência <code>document</code> do DOM</a> descreve o objeto <code>document</code>.</td> </tr> <tr> <td><code>element</code></td> <td><code>element</code> se refere a um elemento ou a um nó do tipo <code>element</code> retornado por um membro da API do DOM. Ai invés de dizer, por exemplo, que o método <code>document.createElement()</code> retorna uma referência de objeto para um <code>node</code>, nós apenas dizemos que o método retorna o <code>element</code> que acabou de ser criado no DOM.
Objetos <code>element</code> implementam a interface DOM <code>Element</code> e também a interface mais básica <code>Node</code>, ambas que estão incluídas juntas nesta referência.</td> </tr> <tr> <td><code>nodeList</code></td> <td>Um <code>nodeList</code> é um array de elementos, como o tipo que é retornado pelo método <code>document.getElementsByTagName()</code>. Itens em uma <code>nodeList</code> são acessados pelo índice em qualquer uma das duas formas: <ul><li> list.item(1)
</li><li> list{{ mediawiki.external("1") }}
</li></ul>
<p>Estas duas formas são equivalentes. Na primeira, <b>item()</b> é um único método do objeto <code>nodeList</code>. A última usa uma típica sintaxe de array para buscar o segundo item na lista.
</p>
</td> </tr> <tr> <td><code>attribute</code></td> <td>Quando um <code>attribute</code> é retornado por um membro (por exemplo, pelo método <b>createAttribute()</b>), ele é uma referência de objeto que expõe uma interface especial (embora pequena) para atributos. Atributos são nós no DOM assim como os elementos o são, embora você raramente pode usá-los como tal.</td> </tr> <tr> <td><code>namedNodeMap</code></td> <td>Um <code>namedNodeMap</code> é como um array, mas os itens são acessados por nome ou índice, embora este último caso é meramente uma conveniência de enumeração, uma vez que estão em nenhuma ordem especial na lista. Um <code>namedNodeMap</code> tem um método item() para este propósito, e você também pode adicionar e remover itens de um <code>namedNodeMap</code>.</td> </tr>
</tbody></table>
<h3 id="Interfaces_DOM" name="Interfaces_DOM">Interfaces DOM</h3>
<p>Este guia é sobre os objetos e as verdadeiras <i>coisas</i> que você pode usar para manipular a hierarquia do DOM. É muitas vezes uma questão de indiferença que o objeto representando o elemento HTML <code>form</code> pegue sua propriedade <b>name</b> da interface <code>HTMLFormElement</code> mas sua propriedade <b>className</b> da própria interface <code>HTMLElement</code>. Em ambos os casos, a propriedade que você quer está simplesmente no objeto form.
</p><p>Mas a relação entre objetos e interfaces que eles implementam no DOM podem ser confusos, e portanto esta seção tenta dizer um pouco mais sobre as interfaces reais da especificação do DOM e como elas se tornam disponíveis.
</p>
<h4 id="Interfaces_e_Objetos" name="Interfaces_e_Objetos">Interfaces e Objetos</h4>
<p>Muitos objetos se valem de muitas interfaces diferentes. O objeto table, por exemplo, implementa uma <a href="pt/DOM/table">Interface do elemento HTML Table</a> especializada, que inclui métodos como <code>createCaption</code> e <code>insertRow</code>. Mas desde que ele também é um elemento HTML, <code>table</code> implementa a interface <code>Element</code> descrita no capítulo <a href="pt/Gecko_DOM_Reference/element">Referência de <code>element</code> do DOM</a>. E finalmente, com um elemento HTML também é, assim como o DOM lhe considera, um nó em uma árvore de nós que criam um modelo de objeto para uma página web ou uma página XML, o elemento table também implementa a mais básica interface <code>Node</code>, a partir da qual o <code>Element</code> deriva.
</p><p>Quando você tem uma referência para um objeto <code>table</code>, como no exemplo a seguir, você rotineiramente usa todas as três interfaces indiferentemente no objeto, talvez sem saber.
</p>
<pre>var table = document.getElementById("table");
var tableAttrs = table.attributes; // Node/Element interface
for(var i = 0; i &lt; tableAttrs.length; i++){
  // HTMLTableElement interface: border attribute
  if(tableAttrs[i].nodeName.toLowerCase() == "border")
    table.border = "1"; 
}
// HTMLTableElement interface: summary attribute
table.summary = "note: increased border";
</pre>
<h4 id="Interfaces_do_n.C3.BAcleo_do_DOM" name="Interfaces_do_n.C3.BAcleo_do_DOM">Interfaces do núcleo do DOM</h4>
<p>Esta seção lista algumas das interfaces mais comumente usadas no DOM. A idéia não é descrever aqui o que estas APIs fazem, mas sim te dar uma idéia dos tipos de métodos e propriedades que você verá muitas vezes enquanto você usa o DOM. Estas APIs comuns são usadas nos exemplos mais extensos no capítulo <a href="pt/Gecko_DOM_Reference/Examples">Exemplos de DOM</a> no final deste livro.
</p><p>Os objetos <code>document</code> e <code>window</code> são os objetos cuja interface você geralmente vai usar na maioria das vezes na programação com DOM. Em termos simples, o objeto <code>window</code> representa algo como o navegador, e o objeto <code>document</code> é a raiz do próprio documento. <code>Element</code> descende da interface genérica <code>Node</code>, e estas duas juntas fornecem muitos dos métodos e propriedades que você usa em elementos individuais. Estes elementos também podem ter interfaces específicas para lidar com os tipos de dados que eles contém, como no exemplo do objeto <code>table</code> na seção anterior.
</p><p>A seguir está uma breve lista das APIs comuns para scripting usando o DOM em web e páginas XML.
</p>
<ul><li> <code><a href="pt/DOM/document.getElementById">document.getElementById</a>(id)</code>
</li><li> <code>element.<a href="pt/DOM/element.getElementsByTagName">getElementsByTagName</a>(name)</code>
</li><li> <code><a href="pt/DOM/document.createElement">document.createElement</a>(name)</code>
</li><li> <code>parentNode.<a href="pt/DOM/element.appendChild">appendChild</a>(node)</code>
</li><li> <code>element.<a href="pt/DOM/element.innerHTML">innerHTML</a></code>
</li><li> <code>element.<a href="pt/DOM/element.style">style</a>.left</code>
</li><li> <code>element.<a href="pt/DOM/element.setAttribute">setAttribute</a></code>
</li><li> <code>element.<a href="pt/DOM/element.getAttribute">element.getAttribute</a></code>
</li><li> <code>element.<a href="pt/DOM/element.addEventListener">addEventListener</a></code>
</li><li> <code><a href="pt/DOM/window.content">window.content</a></code>
</li><li> <code><a href="pt/DOM/window.onload">window.onload</a></code>
</li><li> <code><a href="pt/DOM/window.dump">window.dump</a></code>
</li><li> <code><a href="pt/DOM/window.scrollTo">window.scrollTo</a></code>
</li></ul>
<h3 id="Testando_a_API_do_DOM" name="Testando_a_API_do_DOM">Testando a API do DOM</h3>
<p>Este documento fornece amostras para cada interface que você pode usar em seu próprio desenvolvimento web. Em alguns casos, as amostras são páginas HTML completas, com o acesso ao DOM em um elemento &lt;script&gt;, a interface (por exemplo, botões) necessária para disparar o script em um form, e os elementos HTML sobre os quais o DOM opera listados. Quando for este o caso, você pode copiar a colar o conteúdo do exemplo dentro de um novo arquivo HTML, salvá-lo, e executar o exemplo em um navegador.
</p><p>Há casos, no entanto, que os exemplos são mais concisos. Para executar exemplos que apenas demonstram a relação básica da interface para com os elementos HTML, você pode criar uma página de teste na qual as interfaces podem facilmente ser acessadas por scripts. A seguinte página web, bem simples, fornece um elemento &lt;script&gt; no seu cabeçalho onde você pode colocar funções que testam a interface, alguns poucos elementos HTML com atributos que você pode remover, criar, ou alterar, e a interface web necessária para chamar aquelas funções pelo navegador.
</p><p>Você pode usar esta página de teste ou criar uma similar a fim de testar as interfaces do DOM nas quais você está interessado e ver como elas funcionam na plataforma do navegador. Você pode atualizar o conteúdo da função <code>test()</code> como necessário, criar mais botões, ou adicionar elementos conforme a necessidade.
</p>
<pre>&lt;html&gt;
&lt;head&gt;
&lt;title&gt;DOM Tests&lt;/title&gt;
&lt;script type="application/x-javascript"&gt;
function setBodyAttr(attr,value){
  if(document.body) eval('document.body.'+attr+'="'+value+'"');
  else notSupported();
}
&lt;/script&gt;
&lt;/head&gt; 
&lt;body&gt;
&lt;div style="margin: .5in; height="400""&gt; 
&lt;p&gt;&lt;b&gt;&lt;tt&gt;text&lt;/tt&gt; color&lt;/p&gt; 
&lt;form&gt; 
&lt;select onChange="setBodyAttr('text',
    this.options[this.selectedIndex].value);"&gt; 
&lt;option value="black"&gt;black 
&lt;option value="darkblue"&gt;darkblue 
&lt;/select&gt;
 &lt;p&gt;&lt;b&gt;&lt;tt&gt;bgColor&lt;/tt&gt;&lt;/p&gt;
 &lt;select onChange="setBodyAttr('bgColor',
    this.options[this.selectedIndex].value);"&gt; 
&lt;option value="white"&gt;white 
&lt;option value="lightgrey"&gt;gray
 &lt;/select&gt;
&lt;p&gt;&lt;b&gt;&lt;tt&gt;link&lt;/tt&gt;&lt;/p&gt; 
&lt;select onChange="setBodyAttr('link',
     this.options[this.selectedIndex].value);"&gt;
&lt;option value="blue"&gt;blue
&lt;option value="green"&gt;green
&lt;/select&gt;  &lt;small&gt;
     &lt;a href="http://www.brownhen.com/dom_api_top.html" id="sample"&gt;
(sample link)&lt;/a&gt;&lt;/small&gt;&lt;br&gt;
&lt;/form&gt;
&lt;form&gt;
  &lt;input type="button" value="version" onclick="ver()" /&gt;
&lt;/form&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Para testar muitas interfaces em uma única página–por exemplo, uma "suite" de propriedades que afetam as cores de sua página web–você pode criar uma página de testes similar com um completo console de botões, campos de texto e outros elementos HTML. A seguinte captura de tela pode te dar alguma idéia de como as interfaces podem estar agrupadas para teste.
</p><p><img alt="Image:DOM_Ref_Introduction_to_the_DOM.gif" fileid="2533" src="File:pt/Media_Gallery/DOM_Ref_Introduction_to_the_DOM.gif"><br>
Figure 0.1 Amostra de uma página de teste do DOM
</p><p>Neste exemplo, os menus <i>dropdown</i> atualizam dinamicamente aspectos da página que são acessíveis ao DOM como a cor de fundo (<code>bgColor</code>), a cor dos hyperlinks (<code>aLink</code>), e a cor do texto (<code>text</code>). Contudo você criar suas próprias páginas de teste e testar as interfaces ao passo que você lê sobre elas é uma parte importante do aprendizado de como usar o DOM efetivamente.
</p>{{ languages( { "en": "en/Gecko_DOM_Reference/Introduction", "fr": "fr/R\u00e9f\u00e9rence_du_DOM_Gecko/Introduction", "ja": "ja/Gecko_DOM_Reference/Introduction", "pl": "pl/Dokumentacja_Gecko_DOM/Wprowadzenie", "zh-cn": "cn/Gecko_DOM_\u53c2\u8003/\u5165\u95e8", "es": "es/Referencia_DOM_de_Gecko/Introducci\u00f3n" } ) }}
Revert to this revision