tablas obtener ejemplos div contenido con agregar javascript html xml dom xhtml

ejemplos - obtener contenido de un div javascript



¿Cuál es la diferencia en los niveles de DOM, y cómo se interrelacionan? (2)

Primero, relataré un mensaje de la descripción de MDN de los niveles DOM (énfasis en el original):

El DOM solía escribirse como un conjunto de niveles. Ese ya no es el caso. En estos días se mantiene como el estándar de vida DOM . Esta página proporciona una descripción histórica de los viejos tiempos.

Esto se confirma en un documento W3C llamado " W3C DOM4 ". Podríamos interpretarlo como "DOM Nivel 4" y asumir que agrega un nivel de DOM adicional, pero el texto de la especificación en realidad dice:

Este documento se publica como una instantánea de la especificación DOM Living.

Entonces, esta es una discusión histórica, pero aún vale la pena tenerla.

Un "Nivel DOM" era una colección de especificaciones que describía objetos DOM, métodos y comportamientos. Niveles más altos de la especificación DOM construida en los niveles anteriores. Los cambios ocurrieron de dos maneras:

  1. La adición de una categoría de especificación totalmente nueva (por ejemplo, Level 3 agrega las especificaciones de "Validación" y "Cargar y guardar", que no existían en el Nivel 2)

  2. La modificación de una categoría de especificación existente (por ejemplo, actualización de la especificación "Core")

Obviamente, el primer tipo de cambio fue puramente aditivo, en lugar de sustractivo. El segundo tipo de cambio también parece haber sido casi exclusivamente aditivo, probablemente porque el W3C estaba interesado en preservar la compatibilidad con versiones anteriores.

Los cambios que no son compatibles con versiones anteriores tienden a ser raros y bastante menores. El cambio de Document.doctype que cites, por ejemplo, en realidad fue en gran medida aditivo. El nivel 3 agregó la oración:

Para documentos HTML, se puede devolver un objeto DocumentType, independientemente de la presencia o ausencia de declaración de tipo de documento en el documento HTML.

Esto simplemente dio una mayor flexibilidad para permitir que las implementaciones de DOM añadan un tipo de documento en HTML cuando el autor omite un <!DOCTYPE> . La única funcionalidad que esto rompería es la capacidad de detectar mediante programación la presencia de un tipo de documento especificado por el autor, que no parece ser particularmente valioso.

Probablemente la razón por la que has escuchado a alguien decir: "Oh, ese es DOM nivel 2, así que está bien", es porque DOM nivel 2 es más ampliamente compatible que DOM nivel 3. En algunos casos, esto ni siquiera es una cuestión de edad compatibilidad con el navegador: Firefox marcó su falta de compatibilidad con la especificación "Cargar y guardar" del DOM 3 como WONTFIX. Todas las especificaciones de Nivel 2, por el contrario, son compatibles con los navegadores modernos y cuentan con el respaldo de navegadores mucho más antiguos (ya que el Nivel 2 es cuatro años mayor que el nivel 3).

A menudo escucho sobre "DOM nivel 1", "DOM nivel 2", "DOM nivel 3" y "DOM nivel 4" y me di cuenta de que no sé la diferencia entre ninguno de ellos o cómo se relacionan entre sí.

Conozco los conceptos básicos: DOM es Document Object Model y proporciona acceso a los lenguajes de scripting (en particular, pero hasta donde yo sé, no se limita a varias versiones de ECMAScript, como ECMAScript 5.1 ) para acceder a los elementos de un documento HTML . (Algunos sitios que leí, como la introducción dom en quirksmode , dicen que es para cualquier documento XML, pero HTML es un subconjunto suficiente).

Las fechas en los informes técnicos de DOM de w3c parecen implicar que cada nivel de DOM subsiguiente reemplaza a los anteriores.

Lamentablemente, la mejor referencia que he encontrado para proporcionar aclaraciones ha sido wikipedia , que parece decir lo mismo: la sección de Normalización dice que los niveles subsiguientes "añadieron" funcionalidad adicional, sin mencionar que se eliminó algo.

Ahora, para mis preguntas, que pueden ser de fuego rápido, pero espero expresar el estado general de mi ignorancia:

  • ¿Cuál es la relación de un nivel de DOM a otro?
  • ¿Los DOM de nivel inferior completan subconjuntos de DOM de nivel superior? ¿Se ha eliminado alguna funcionalidad a medida que avanza el nivel DOM? Cuando veo enunciados como The level 1 DOM will work fine on an HTML document y In the Level 1 DOM, each object, whatever it may be exactly, is a Node (ambos de la introducción de quirksmode), esto implica que tales declaraciones son cierto para los niveles 2, 3 y 4? (Estos son todo tipo de la misma pregunta, solo se le preguntaron diferentes maneras)
  • ¿El citar el nivel de DOM es realmente poco más que una forma abreviada de qué tan moderno debe ser un agente de usuario para que funcione una función en particular?

Obviamente, puedo estudiar cada especificación de los informes técnicos DOM del w3c, pero esperaba obtener respuestas de aquellos con experiencia de primera mano. Solo echando un vistazo a la sección de cambios de la especificación para DOM nivel 3 , veo que la mayoría de los cambios de 2 a 3 fueron adiciones, aunque algunas de las implementaciones clave en la interfaz Node han cambiado. ¿Estos cambios rompieron algo?

Me gustaría hacer algo más que solo asentir sabiamente la próxima vez que alguien me diga: "Oh, ese es el nivel DOM 2, así que está bien", por lo que agradecería cualquier referencia que haya omitido o información de primera mano que no obtuve de mi investigación .


Solo un par de notas sobre DOM4 para agregar a la respuesta de los apiladores:

... En el Nivel 1 DOM, cada objeto, cualquiera que sea exactamente, es un Nodo ..., ¿esto implica que tales afirmaciones son verdaderas para los niveles 2, 3 y 4?

Eso es un rotundo no. Los atributos en DOM4 no son nodos.

DOM4 realiza una serie de cambios importantes no compatibles con versiones anteriores. Los atributos no son los nodos cambian, es grande si no está usando javascript o un lenguaje de pato. También document.createElement () en un documento XML creará el elemento en el espacio de nombres http://www.w3.org/1999/xhtml , donde los niveles anteriores crean el elemento sin espacio de nombres. Los navegadores llevan mucho tiempo haciendo esto, pero las típicas implementaciones de DOM orientadas a XML han utilizado el DOM3 y la forma anterior. Ese es un gran cambio si migra de una implementación de DOM3 a una de DOM4 en un contexto que no sea de navegador.