Modelo de objeto de documento

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 19 de agosto de 2022; las comprobaciones requieren 30 ediciones .

DOM (del inglés  Document Object Model  - "Document Object Model") es una plataforma y una interfaz de programación independiente del lenguaje que permite que los programas y scripts accedan al contenido de documentos HTML , XHTML y XML , así como cambiar el contenido, estructura y ejecución de dichos documentos.

El DOM no impone restricciones a la estructura de un documento. Cualquier documento de estructura conocida se puede representar utilizando el DOM como un árbol de nodos, cada nodo de los cuales es un elemento, atributo, texto, gráfico o cualquier otro objeto. Los nodos están vinculados por una relación padre-hijo.

Inicialmente, varios navegadores tenían sus propios modelos de documentos (DOM), incompatibles con el resto. Para garantizar la compatibilidad mutua y hacia atrás, los especialistas del consorcio internacional W3C clasificaron este modelo en niveles, para cada uno de los cuales se creó su propia especificación. Todas estas especificaciones se combinan en un grupo común llamado W3C DOM.

Otra interfaz de programación de aplicaciones, llamada JDOM , proporciona una capa más alta que el W3C DOM para trabajar con documentos Java XML .

Historia

La historia del DOM se entrelaza con la historia de las " guerras de navegadores " a fines de la década de 1990 entre Netscape Navigator y Microsoft Internet Explorer (y entre los primeros lenguajes de scripting JavaScript y JScript ) por ser ampliamente utilizado en el motor de diseño de páginas web .

DOM tradicional

El lenguaje de programación JavaScript fue lanzado por Netscape Communications en 1995 como parte del navegador web Netscape Navigator 2.0 . El competidor de Netscape, Microsoft , lanzó Internet Explorer 3.0 más tarde ese año con un puerto de JavaScript llamado JScript . JavaScript y JScript permiten a los desarrolladores crear páginas web que son interactivas del lado del cliente . La capacidad limitada para detectar eventos creados por el usuario y modificar el documento HTML en la primera generación de estos lenguajes finalmente se conoció como "DOM nivel 0" o "DOM tradicional". No se ha desarrollado ningún estándar independiente para el nivel 0 de DOM, sin embargo, se ha descrito parcialmente en la especificación HTML4 .

El DOM tradicional estaba limitado en los tipos de elementos a los que se podía acceder. Elementos como formulario ( formulario ), vínculo ( enlace ) e imagen ( imagen ) se pueden denominar mediante nombres jerárquicos que comienzan en la raíz del objeto del documento. El nombre jerárquico podría usar el nombre o el índice secuencial del elemento común. Por ejemplo, se puede acceder a un elemento de entrada de formulario como document.formName.inputName o como document.forms[0].elements[0].

El DOM tradicional permitía la validación de formularios del lado del cliente y el popular efecto de "transformación de objetos".

DOM intermedio

En 1997, Netscape y Microsoft lanzaron navegadores web, respectivamente, Netscape Navigator e Internet Explorer versiones 4.0, agregando soporte para HTML dinámico (DHTML), que brinda la capacidad de cambiar la funcionalidad de un documento HTML cuando se carga. DHTML requería extensiones para el objeto de documento elemental que se encuentra en la implementación DOM tradicional. Debido a que JScript se basaba en JavaScript , las implementaciones DOM tradicionales eran en gran parte compatibles, pero las extensiones DOM para DHTML fueron desarrolladas en paralelo por cada uno de los creadores del navegador y seguían siendo incompatibles. Estas versiones del DOM se conocieron como el "DOM intermedio".

El DOM intermedio hizo posible manipular las propiedades de la hoja de estilo en cascada (CSS) que afectan la visualización del documento. También proporcionó acceso a una nueva propiedad llamada "capas" a través de las propiedades document.layers (en Netscape Navigator ) y document.all (en Internet Explorer ). Debido a la incompatibilidad inicial en el DOM intermedio, el desarrollo de la página web requería un manejo especial para cada caso.

Las versiones posteriores de Netscape Navigator dejaron de admitir el DOM intermedio. Internet Explorer sigue admitiendo su DOM intermedio para la compatibilidad con versiones anteriores .

Estandarización

El World Wide Web Consortium (W3C), fundado en 1994 para mantener y desarrollar los estándares abiertos de la World Wide Web , llevó a Netscape Communications , Microsoft , Apple y otras empresas a desarrollar un estándar para lenguajes de secuencias de comandos basados ​​en navegador llamado ECMAScript . . La primera versión del estándar se publicó en 1997 . Las versiones posteriores de JavaScript y JScript comenzaron a implementar el estándar ECMAScript para una mejor compatibilidad entre navegadores .

Después del lanzamiento de ECMAScript , el W3C comenzó a trabajar en la estandarización de DOM. El estándar DOM original, también conocido como DOM Nivel 1, fue recomendado por el W3C a finales de 1998 . Casi al mismo tiempo, se lanzó Internet Explorer 5.0 con compatibilidad limitada con DOM de nivel 1. El nivel 1 de DOM proporcionó un modelo de objeto completo para un documento HTML o XML completo , incluida una forma de cambiar cualquier parte del documento. Los navegadores no adaptados (por ejemplo: Internet Explorer 4.x , Netscape 4.x) fueron ampliamente utilizados hasta el año 2000 .

DOM nivel 2 se publicó a finales de 2000 . Presentó la función getElementById, así como el modelo de eventos y la compatibilidad con el espacio de nombres XML y CSS . DOM Nivel 3, publicado en abril de 2004 , agregó soporte XPath y manejo de eventos de teclado , así como una interfaz para serializar un documento como XML .

En 2005 , la mayor parte del W3C DOM era compatible con los principales navegadores compatibles con ECMAScript , incluidos Internet Explorer 6.x ( 2001 ), Opera , Safari y navegadores basados ​​en el motor web Gecko (incluidos Mozilla , Firefox , SeaMonkey y Camino ). .

Implementación del DOM en navegadores web

Dada la existencia de varias implementaciones del DOM en los navegadores web , es un hábito común entre los programadores verificar primero la funcionalidad de ciertas funciones del DOM para cada navegador en particular y solo luego usarlas. El siguiente código ilustra una forma de comprobar la compatibilidad con los estándares W3C DOM de un navegador antes de ejecutar código que depende del resultado de esa comprobación.

if ( document . getElementById && document . getElementsByTagName ) { // si los métodos getElementById y getElementsByTagName // están disponibles, entonces la compatibilidad con W3CDOM es relativamente segura. obj = documento . getElementById ( "navegación" ) // sigue otro código usando las características de W3CDOM. // …. }

Dado que el DOM es navegable en cualquier área (por ejemplo, padre y hermano anterior) y permite cambios arbitrarios, una implementación debe al menos almacenar en búfer un documento que (o alguna forma diseñada del cual) se haya leído hasta ese momento.

Motor de navegación

Artículo principal: motor de navegación

Los navegadores confían en su motor al convertir (analizar) archivos HTML al DOM. Algunos motores de navegador, como Trident/MSHTML , están vinculados a un navegador específico (en este caso, Internet Explorer ) de una forma u otra . Los mismos motores que WebKit y Gecko se utilizan en muchos navegadores diferentes, como Safari , Google Chrome , RockMelt , Firefox o Flock . Diferentes motores de navegador admiten estándares DOM en diferentes niveles de cumplimiento.

Ver también: Comparación de motores de diseño (Document Object Model )

Bibliotecas

Niveles DOM W3C

El nivel actual de las especificaciones DOM es el Nivel 2, pero el W3C recomienda algunas partes de las especificaciones del Nivel 3.

Nivel 0 Incluye todos los DOM específicos que existían antes del Nivel 1, como document.images , document.forms , document.layers y document.all . Tenga en cuenta que estos modelos no son especificaciones DOM publicadas formalmente por el W3C, sino información sobre lo que existía antes del inicio del proceso de estandarización. Nivel 1 Funcionalidad DOM básica (HTML y XML) en documentos, como obtener un árbol de nodos de documentos, la capacidad de modificar y agregar datos. Nivel 2 Soporte para el llamado espacio de nombres XML <--vistas filtradas--> y eventos. Nivel 3 Consta de seis especificaciones diferentes:
  1. DOM Nivel 3 Núcleo;
  2. DOM Nivel 3 Cargar y Guardar;
  3. XPath de nivel 3 de DOM;
  4. DOM Nivel 3 Vistas y Formato;
  5. Requisitos de nivel 3 de DOM;
  6. Validación DOM Nivel 3.
Estas especificaciones son extensiones DOM adicionales.

Aplicaciones

Navegadores web

No es necesario que los navegadores web utilicen el DOM para representar un documento HTML. Sin embargo, el DOM es necesario para los scripts de JavaScript que deseen observar o modificar una página web de forma dinámica. En otras palabras, el modelo de objeto del documento es la herramienta mediante la cual JavaScript ve el contenido de una página HTML y el estado del navegador.

Problemas

Debido a la incompatibilidad del navegador, el uso del DOM a veces conduce a dificultades de diseño HTML y poca confiabilidad de la página.

Especificaciones

Véase también

Enlaces