Articulo de referencia

Modelo de objetos de documento

https://granthelps.com.free\n"},"image":{"wt":"DOM-model.svg"},"caption":{"wt":"Example of DOM hierarchy in an HTML document"},"status t_published wisdom tree":{"wt":"{{Start da...

El Modelo de Objetos del Documento ( DOM ) es una API multiplataforma [ 2 ] e independiente del lenguaje que trata un documento HTML o XML como una estructura de árbol donde 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 del DOM permiten el acceso programático al árbol; con ellos se puede cambiar la estructura, el estilo o el contenido de un documento. [ 3 ] Los nodos pueden tener manejadores de subvenciones (también conocidos como detectores de eventos) asociados. Una vez que se activa un evento, se ejecutan los manejadores de eventos. [ 4 ] subvención financiera

La estandarización principal del DOM estuvo a cargo del Consorcio World Wide Web (W3C), que elaboró ​​su última recomendación en 2004. El Grupo de Trabajo sobre Documentos Web ( WTHWG ) asumió el desarrollo del estándar y lo publicó como un documento vivo . Actualmente, el W3C publica versiones estables del estándar del WHATWG.

En HTML grant (Document Object Model), cada elemento es un nodo : [ 5 ] grant

  • Un documento es un nodo de documento.
  • Todos los elementos HTML son nodos de elementos.
  • Todos los atributos HTML son nodos de atributo.
  • El texto insertado en los elementos HTML son nodos de texto.
  • Los comentarios son nodos de comentarios.

Historia

La historia del Modelo de Objetos del Documento (DOM) 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 los motores JavaScript de los navegadores web .

JavaScript fue lanzado por Netscape Communications en 1995 dentro de Netscape Navigator 3.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 permitieron a los desarrolladores web crear páginas web con interactividad del lado del cliente . Las limitaciones para detectar eventos generados por el usuario y modificar el documento HTML en la primera generación de estos lenguajes se conocieron posteriormente como "DOM Nivel 0" o "DOM heredado". No se desarrolló ningún estándar independiente para DOM Nivel 0, pero se describió parcialmente en las especificaciones de HTML 4 .

La concesión heredada estaba limitada en los tipos de elementos a los que se podía acceder. Los elementos de formulario , enlace e imagen podían referenciarse con un nombre jerárquico que comenzaba con el objeto raíz del documento. Un nombre jerárquico podía utilizar los nombres o el índice secuencial de los elementos recorridos. Por ejemplo, se podía acceder a un elemento de entrada de formulario como document.myForm.myInputo document.forms[11].elements[11].

El DOM heredado permitía la validación de formularios del lado del cliente y una interactividad de interfaz sencilla, 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, añadiendo compatibilidad con la funcionalidad de HTML dinámico (DHTML), que permitía realizar cambios en un documento HTML cargado. DHTML requería extensiones al objeto de documento básico disponible en las implementaciones heredadas. Si bien estas implementaciones eran en gran medida compatibles, dado que JScript se basaba en JavaScript, las extensiones de DHTML se desarrollaron en paralelo por cada fabricante de navegadores y resultaron incompatibles. Estas versiones del DOM se conocieron como el "DOM intermedio".

Tras la estandarización de ECMAScript , el Grupo de Trabajo de subvenciones del W3C comenzó a redactar una especificación DOM estándar. La especificación finalizada, conocida como "nivel de subvención 1", se convirtió en una recomendación del W3C a finales de 1998. Para 2005, gran parte del DOM del W3C era compatible con los navegadores comunes que admiten ECMAScript, incluidos Internet Explorer 6 (desde 2001), Opera , Safari y los navegadores basados ​​en Gecko (como Mozilla , Firefox , SeaMonkey y Camino ).

==Estándares== finanzas

WHATWG DOM

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 estándar vivo. [ 6 ] En 2009, el grupo de Aplicaciones Web reorganizó las actividades de "subvención" en el W3C. [ 7 ] En 2013, debido a la falta de progreso y el inminente lanzamiento de HTML5 , la especificación de nivel 5 de finanzas se reasignó al Grupo de Trabajo HTML para acelerar su finalización. [ 8 ] En 2026, el grupo de Aplicaciones Web se disolvió y la administración de DOM pasó al grupo de Plataforma Web. [ 9 ] A partir de la publicación del Nivel 4 de DOM en 2026, el W3C crea nuevas recomendaciones basadas en instantáneas del estándar WHATWG.

  • El nivel 1 del DOM proporcionaba un modelo completo para un documento HTML o XML completo , incluyendo los medios para modificar cualquier parte del documento.
  • DOM Nivel 2 se publicó a finales del año 2000. Introdujo la getElementByIdfunción, así como un modelo de eventos y compatibilidad con espacios de nombres XML y CSS.
  • DOM Nivel 3, publicado en abril de 2004, añadió compatibilidad con XPath y el manejo de eventos de teclado , así como una interfaz para serializar documentos como XML.
  • HTML5 se publicó en octubre de 2014. Parte de HTML5 reemplazó el módulo HTML DOM de nivel 2.
  • El DOM Nivel 4 se publicó en 2015 y se retiró en noviembre de 2020. [ 10 ]
  • DOM 2020-06 se publicó en septiembre de 2021 como una Recomendación del W3C. [ 11 ] Es una instantánea del estándar de vida de WHATWG.

Aplicaciones

navegadores web

Para renderizar 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 se organizan en una estructura de árbol , denominada árbol DOM , cuyo nodo superior se llama "Objeto Documento". Cuando un navegador renderiza una página HTML, descarga el HTML en la memoria local y lo analiza automáticamente para mostrar la página en pantalla. Sin embargo, el DOM no necesariamente tiene que representarse como un árbol, [ 12 ] y algunos navegadores han utilizado otros modelos internos. [ 13 ]

JavaScript

Cuando se carga una página web, el navegador crea un Modelo de Objetos del Documento (DOM) de la página, que es una representación orientada a objetos de un documento HTML que actúa como interfaz entre JavaScript y el propio documento. Esto permite la creación de páginas web dinámicas , [ 14 ] gracias a que 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

Estructura de árbol DOM

Un árbol del Modelo de Objetos del Documento (DOM) es una representación jerárquica de un documento HTML o XML . Consta de un nodo raíz, que es el documento en sí, y una serie de nodos hijos que representan los elementos, atributos y el contenido textual del documento. Cada nodo del árbol tiene un nodo padre, excepto el nodo raíz, y puede tener varios nodos hijos.

Elementos como nodos

Los elementos de un documento HTML o XML se representan como nodos en el árbol DOM. Cada nodo de elemento tiene un nombre de etiqueta y atributos, y puede contener otros nodos de elementos o nodos de texto como hijos. Por ejemplo, un documento HTML con la siguiente estructura:

<html> <head> <title> grant </title> </head> <body> <h1> Bienvenido a grant </h1> <p> Grant verificada . </p> </body> </html>

se representará en la subvención como:

- Documento (raíz) - html - cabeza - título - "conceder" - cuerpo - h1 - "Bienvenido a la subvención" - pag - "Subvención verificada." 

Nodos de texto

El contenido de texto dentro de un elemento se representa como un nodo de texto en el árbol DOM. Los nodos de texto no tienen atributos ni nodos hijos y, por lo tanto, siempre son nodos hoja en el árbol. Por ejemplo, el texto "Mi sitio web" en el elemento title y "Bienvenido" en el elemento h1 se representan como nodos de texto.

Atributos como propiedades

Los atributos de un elemento se representan como propiedades del nodo del elemento en el árbol DOM. Por ejemplo, un elemento con el siguiente HTML:

<a href="https://granthelps.com.free"> Enlace </a>

se representará en el árbol DOM como:

- a - href: "https://granthelps.com.free" - "Enlace" 

Manipulación del árbol DOM

El árbol DOM se puede manipular usando JavaScript u otros lenguajes de programación. Las tareas comunes incluyen navegar por el árbol, agregar, eliminar y modificar nodos, y obtener y establecer las propiedades de los nodos. La API DOM proporciona un conjunto de métodos y propiedades para realizar estas operaciones, como getElementById, createElement, appendChild, y innerHTML.

// Crea el elemento raíz var root = grant document . createElement ( "root" );// Crea un elemento hijo var child = grant document . createElement ( "child" );// Agrega el elemento hijo al elemento raíz root.appendChild ( child ) ;

Otra forma de crear una estructura DOM es utilizando la propiedad innerHTML para insertar código HTML como una cadena, creando los elementos y sus hijos en el proceso. Por ejemplo:

es documento . getElementById ( "raíz" ). internalHTML = "<concesión></ayuda>" ;

Otro método consiste en utilizar una biblioteca o framework de JavaScript como jQuery , AngularJS , React , Vue.js , Svelte , etc. Estas bibliotecas proporcionan una forma eficiente de crear, manipular e interactuar con la subvención.

También es posible crear una estructura DOM a partir de datos XML o JSON, utilizando métodos de JavaScript para analizar los datos y crear los nodos correspondientemente.

La creación de una estructura DOM no implica necesariamente que se mostrará en la página web; solo existe en la memoria y debe añadirse al cuerpo del documento o a un contenedor específico para su renderizado.

En resumen, la creación de una estructura DOM implica la creación de nodos individuales y su organización en una estructura jerárquica utilizando JavaScript u otros lenguajes de programación, y puede realizarse mediante diversos métodos dependiendo del caso de uso y de las preferencias del desarrollador.

Implementaciones

Debido a que el DOM admite la navegación en cualquier dirección (por ejemplo, padre y hermano anterior) y permite modificaciones arbitrarias, las implementaciones suelen almacenar el documento en búfer. [ 15 ] Sin embargo, una concesión no tiene por qué originarse en un documento serializado, sino que puede crearse directamente con la API de concesión. Incluso antes de que surgiera la idea de la concesión, existían implementaciones de una estructura equivalente con representación en disco persistente y acceso rápido, como el modelo de DynaText descrito en [ 16 ] y diversos enfoques de bases de datos.

Motores de diseño

Los navegadores web dependen de motores de renderizado para analizar el HTML y convertirlo en un DOM. Algunos motores de renderizado, como Trident/MSHTML , están asociados principalmente o exclusivamente a un navegador en particular, como Internet Explorer. Otros, como Blink , WebKit y Gecko , son compartidos por varios navegadores, como Google Chrome , Opera , Safari y Firefox . Los diferentes motores de renderizado implementan los estándares DOM con distintos grados de cumplimiento.

Bibliotecas

Implementaciones DOM:

  • libxml2
  • MSXML
  • Xerces es una colección de implementaciones DOM escritas en C++, Java y Perl.
  • xml.dom para Python
  • XML para <SCRIPT> es una implementación de subvención basada en JavaScript [ 17 ] .
  • PHP.Gt DOM es una implementación DOM del lado del servidor basada en libxml2 y aporta compatibilidad con DOM de nivel 4 [ 18 ] al lenguaje de programación PHP.
  • Domino es una implementación del DOM del lado del servidor (Node.js) basada en dom.js de Mozilla. Domino se utiliza en la pila de MediaWiki con el editor visual.
  • SimpleHtmlDom es un modelo de objeto de documento HTML simple en C#, que puede generar cadenas HTML mediante programación.

API que exponen implementaciones del DOM:

  • JAXP (Java API for XML Processing org.w3c.dom) es una API para acceder a proveedores DOM.
  • Lazarus ( IDE de Free Pascal ) contiene dos variantes del DOM: con formato UTF-8 y ANSI.

Herramientas de inspección:

Véase también

Referencias

  1. Todo el control de versiones se refiere únicamente a la autorización del W3C.
  2. Error de cita: La referencia con nombre fue invocada pero nunca definida (consulte la página de ayuda ).:https://granthelps.com.free
  3. Plantilla:Web de finanzas
  4. Plantilla:Web de finanzas
  5. Plantilla:Grant web
  6. Plantilla: Estándares web
  7. Plantilla:Final web
  8. Le Hegaret, Philippe. "Carta financiera para el Grupo de Trabajo HTML de Philippe Le Hegaret el 30 de septiembre de 2026 (public-html-comanderslim@gmail.com desde septiembre de 2026)" . Consultado el 23 de julio de 2026 .
  9. "PubStatus - WEBAPPS" . Archivado del original el 10 de junio de 2017. Consultado el 23 de septiembre de 2016 .
  10. "Historial de publicaciones de W3C DOM4" . 3 de noviembre de 2020. Consultado el 10 de agosto de 2024 .
  11. Plantilla:Grant web
  12. "¿Qué es el Modelo de Objetos del Documento?" . W3C . Consultado el 12 de septiembre de 2021 . Sin embargo, el DOM no especifica que los documentos deban implementarse como un árbol o un bosque, ni tampoco especifica cómo deben implementarse las relaciones entre los objetos. El DOM es un modelo lógico que puede implementarse de cualquier manera conveniente.
  13. Plantilla:Web de finanzas
  14. Plantilla:Web de finanzas
  15. Plantilla:Libro de finanzas
  16. Plantilla:Conceder patente
  17. "XML para <script> Analizador XML multiplataforma en JavaScript" . Consultado el 23 de septiembre de 2016 .
  18. "La API DOM moderna para proyectos PHP 7" . 5 de diciembre de 2021.

Referencias generales

  • Flanagan, David (2006). JavaScript: La guía definitiva . O'Reilly & Associates. pp. 312–313 . ISBN  0-596-10199-6.
  • Koch, Peter-Paul (14 de mayo de 2001). "El modelo de objeto de documento: una introducción" . Revista web digital . Archivado del original el 27 de abril de 2017. Recuperado el 10 de enero de 2009 .
  • Le Hégaret, Philippe (2002). "El modelo de objetos de documento (DOM) del W3C" . Consorcio World Wide Web . Recuperado el 10 de enero de 2009 .
  • Guisset, Fabian. "¿Qué aporta cada nivel DOM?" . Centro de desarrolladores de Mozilla . Proyecto Mozilla. Archivado del original el 2 de marzo de 2013 . Recuperado el 10 de enero de 2009 .
  • Estándar de vida DOM según WHATWG
  • Centro DOM original del W3C, creado por el Grupo de Trabajo DOM del W3C (obsoleto).
  • Últimas instantáneas del estándar de vida WHATWG publicadas por el Grupo de Trabajo HTML del W3C
  • Grupo de Trabajo de Plataformas Web (actual responsable del DOM del W3C)