> Faqs > Por qué no funcionan los web components que extienden etiquetas nativas con "is"

Por qué no funcionan los web components que extienden etiquetas nativas con "is"

Buenos días,

Estoy estudiando vuestro Manual de Web Components. En el capítulo 3, sobre componentes para extender etiquetas nativas del HTML con "is", no consigo que el código funcione correctamente.

¿Es posible que contenga algún error? ¿O puede deberse a algún problema concreto con mis navegadores?

Gracias.

Respuestas

Gracias por avisarnos del problema de ese artículo. Efectivamente, hay novedades con respecto al estándar de Web Components que afectan a este artículo que mencionas: Extendiendo elementos en Web Components

Lo hemos actualizado para explicar la situación con detalle, pero en resumen, lo que pasa es que este modelo de creación de componentes mediante la extensión de una etiqueta nativa del HTML y el atributo "is" no ha visto la luz en el estándar. Esta especificación para extender etiquetas nativas no ha tenido apoyo generalizado por los navegadores y Safari se ha negado a implementarla por lo que en realidad es muy problable que se haya retirado el soporte en otros navegadores también.

Entonces existían dos modalidades de desarrollo de Custom Elements:

Extendiendo HTMLElement, mediante una clase Javascript ES6

Que es la que te permite crear componentes autónomos con etiquetas totalmente personalizadas (siempre con un guión entre medias del nombre en la etiqueta):

<mi-componente></mi-componente>
<image-upload></image-upload>
...

Extendiendo etiquetas nativas con el atributo "is"

Que es la que permitía crear especializaciones de etiquetas nativas del HTML. En ellas indicábamos sobre la misma etiqueta HTML el atributo "is" para indicar qué especialización se debía aplicar.

<buton is="mi-boton-especial"></button>

Esta modalidad de desarrollo de componentes no se ha concretado positivamente y no debemos usarla porque no ha visto la luz en el estándar actual. Veremos si más adelante lo hace, aunque parece dudable.

Miguel Angel
3310 147 216 17