Modelo de objetos de documento


El Document Object Model ( DOM ) es una interfaz multiplataforma e independiente del lenguaje que trata un documento XML o HTML como una estructura de árbol en la que cada nodo es un objeto que representa una parte del documento. El DOM representa un documento con un árbol lógico. Cada rama del árbol termina en un nodo y cada nodo contiene objetos. Los métodos DOM permiten el acceso programático al árbol; con ellos se puede cambiar la estructura, el estilo o el contenido de un documento. Los nodos pueden tener controladores de eventos adjuntos. Una vez que se activa un evento, se ejecutan los controladores de eventos. [2]

La principal estandarización del DOM estuvo a cargo del World Wide Web Consortium (W3C), que desarrolló una recomendación por última vez en 2004. WHATWG se hizo cargo del desarrollo del estándar y lo publicó como un documento vivo . El W3C ahora publica instantáneas estables del estándar WHATWG.

La historia del Document Object Model está entrelazada con la historia de las " guerras de navegadores " de finales de la década de 1990 entre Netscape Navigator y Microsoft Internet Explorer , así como con la de JavaScript y JScript , los primeros lenguajes de scripting que se implementaron ampliamente en el Motores JavaScript de navegadores web .

JavaScript fue lanzado por Netscape Communications en 1995 dentro de Netscape Navigator 2.0. El competidor de Netscape, Microsoft , lanzó Internet Explorer 3.0 al año siguiente con una reimplementación de JavaScript llamada JScript. JavaScript y JScript permiten a los desarrolladores web crear páginas web con interactividad del lado del cliente . Las instalaciones limitadas para detectar eventos generados por el usuario y modificar el documento HTML en la primera generación de estos lenguajes eventualmente se conocieron como "DOM Nivel 0" o "DOM heredado". No se desarrolló ningún estándar independiente para DOM Nivel 0, pero se describió en parte en las especificaciones para HTML 4 .

El DOM heredado estaba limitado en los tipos de elementos a los que se podía acceder. Se puede hacer referencia a los elementos de formulario , enlace e imagen con un nombre jerárquico que comience con el objeto del documento raíz. Un nombre jerárquico podría hacer uso de los nombres o del índice secuencial de los elementos atravesados. Por ejemplo, se puede acceder a un elemento de entrada de formulario como document.formName.inputNameo document.forms[0].elements[0].

El DOM heredado habilitó la validación de formularios del lado del cliente y la interactividad de la interfaz simple, como la creación de información sobre herramientas .

En 1997, Netscape y Microsoft lanzaron la versión 4.0 de Netscape Navigator e Internet Explorer respectivamente, agregando soporte para la funcionalidad de HTML dinámico (DHTML) que permite cambios en un documento HTML cargado. DHTML requería extensiones para el objeto de documento rudimentario que estaba disponible en las implementaciones de DOM heredado. Aunque las implementaciones de DOM heredado eran en gran parte compatibles ya que JScript se basaba en JavaScript, las extensiones DOM de DHTML fueron desarrolladas en paralelo por cada fabricante de navegadores y siguieron siendo incompatibles. Estas versiones del DOM se conocieron como "DOM intermedio".

Después de la estandarización de ECMAScript , el Grupo de Trabajo DOM del W3C comenzó a redactar una especificación DOM estándar. La especificación completa, conocida como "DOM Nivel 1", se convirtió en una Recomendación del W3C a fines de 1998. En 2005, gran parte del DOM del W3C estaba bien respaldado por navegadores comunes habilitados para ECMAScript, incluido Microsoft Internet Explorer versión 6 (desde 2001) Navegadores basados ​​en Opera , Safari y Gecko (como Mozilla , Firefox , SeaMonkey y Camino ).

El Grupo de Trabajo DOM del W3C publicó su recomendación final y posteriormente se disolvió en 2004. Los esfuerzos de desarrollo migraron al WHATWG , que continúa manteniendo un nivel de vida. [3] En 2009, el grupo de Aplicaciones Web reorganizó las actividades de DOM en el W3C. [4] En 2013, debido a la falta de progreso y el lanzamiento inminente de HTML5 , la especificación DOM Nivel 4 fue reasignada al Grupo de Trabajo HTML para acelerar su finalización. [5] Mientras tanto, en 2015, el grupo de Aplicaciones Web se disolvió y la administración de DOM pasó al grupo de Plataforma Web. [6] A partir de la publicación de DOM Nivel 4 en 2015, el W3C crea nuevas recomendaciones basadas en instantáneas del estándar WHATWG.

  • DOM Nivel 1 proporcionó un modelo completo para un documento HTML o XML completo , incluidos los medios para cambiar cualquier parte del documento.
  • DOM Nivel 2 se publicó a finales de 2000. Introdujo la getElementByIdfunción, así como un modelo de eventos y soporte para espacios de nombres XML y CSS.
  • DOM Nivel 3, publicado en abril de 2004, agregó soporte para XPath y manejo de eventos de teclado , así como una interfaz para serializar documentos como XML.
  • DOM Nivel 4 se publicó en 2015. Es una instantánea del nivel de vida de WHATWG. [7]

navegadores web

Para representar un documento como una página HTML, la mayoría de los navegadores web utilizan un modelo interno similar al DOM . Los nodos de cada documento están organizados en una estructura de árbol , denominada árbol DOM , con el nodo superior denominado "Objeto de documento". Cuando se representa una página HTML en los navegadores, el navegador descarga el HTML en la memoria local y lo analiza automáticamente para mostrar la página en la pantalla.

JavaScript

Cuando se carga una página web, el navegador crea un modelo de objetos de documento de la página, que es una representación orientada a objetos de un documento HTML que actúa como una interfaz entre JavaScript y el documento en sí. Esto permite la creación de páginas web dinámicas , [8] porque dentro de una página JavaScript puede:

  • agregar, cambiar y eliminar cualquiera de los elementos y atributos HTML
  • cambiar cualquiera de los estilos CSS
  • reaccionar a todos los eventos existentes
  • crear nuevos eventos

Debido a que DOM admite la navegación en cualquier dirección (por ejemplo, padre y hermano anterior) y permite modificaciones arbitrarias, una implementación debe al menos almacenar en búfer el documento que se ha leído hasta ahora (o alguna forma analizada del mismo). [9]

Motores de diseño

Los navegadores web se basan en motores de diseño para analizar HTML en un DOM. Algunos motores de diseño, como Trident / MSHTML , están asociados principal o exclusivamente con un navegador en particular, como Internet Explorer. Otros, incluidos Blink , WebKit y Gecko , son compartidos por varios navegadores, como Google Chrome , Opera , Safari y Firefox . Los diferentes motores de diseño implementan los estándares DOM en diversos grados de cumplimiento.

Bibliotecas

Implementaciones DOM:

  • libxml2
  • MSXML
  • Xerces es una colección de implementaciones DOM escritas en C ++, Java y Perl
  • XML para