Shadow DOM es una de las partes del standard de WebComponents que define el W3C. ¿Qué es exactamente y para que sirve el Shadow DOM?. Para entenderlo vamos a ver un bloque de código aparentemente sencillo.
<html> <head> <style> p{ color:blue !important; } </style> </head> <body> <p id="host" style="color:red">hola que tal</p> <p >otro parrafo</p> <input type="button" value="aceptar" id="boton"/> </body> </html>
El código contiene dos párrafos uno que incluye un estilo inline y el otro que no tiene ningún estilo. Ahora bien la hoja de estilo asigna el color “blue” con !important , por lo tanto ambos párrafos se mostrarán azules.
Esto que aparentemente parece razonable genera muchos problemas ya que no permite aislar unas partes del documento y tratarlas de forma aislada como si fueran componentes. El documento entero es afectado por el atributo !important.
Shadow DOM
La solución a este problema pasa por utilizar el Shadow DOM , que es un árbol DOM que se construye en paralelo al árbol original de una parte del documento.
El siguiente bloque de código JavaScript se encarga de generar una estructura ShadowDOM de tal forma que cuando se pulse el botón se genere una estructura Shadow que substituya la estructura original.
window.onload=function() { var boton=document.getElementById("boton"); boton.onclick=function() { var host = document.querySelector('#host'); var raiz=host.createShadowRoot(); var p= document.createElement("p"); p.style.color='yellow'; var texto=document.createTextNode("hola shadow"); p.appendChild(texto); raiz.appendChild(p); } }
Como se puede observar el nodo “#host” es seleccionado y se construye un párrafo a través de ShadowDOM para substituir al párrafo original. Este nuevo párrafo tendrá color amarillo.
Lo importante es darse cuenta que la nueva estructura DOM se encuentra aislada ya que no le afecta la etiqueta el atributo !important. Este es uno de los conceptos poco a poco serán siendo más habituales cuando los WebComponents nos lleguen ya que en estos el aislamiento en fundamental.
Otros artículos relacionados : HTML5 Template Element ,HTML5 Visibility API
Artículo claro y conciso como siempre.
Me gustaría que escribieras algo sobre JavaFX y las aplicaciones de escritorio en JAVA. ¿pueden llegar a tener un hueco importante? ¿Puede JavaFX acabar abandonado si no incrementa su uso?
ojalá lo supiera, es una absoluta incógnita, pero si tuviera que apostar diría que tienen un futuro cuanto menos dudoso
JavaFX esta muerto, tienes q darle importancia a HTML5 con lo nuevo de JS y los frameworks del mismo
Creo que será muy dificil que JavaFx remonte