La Etiqueta OBJECT

Permite incrustar recursos externos en un documento HTML, como imágenes, videos, PDFs, aplicaciones web o incluso otros documentos HTML.
La etiqueta <object>
permite incrustar recursos externos en un documento HTML, como imágenes, videos, PDFs, aplicaciones web o incluso otros documentos HTML. Es una herramienta versátil que ofrece una alternativa a etiquetas específicas como <img>
, <iframe>
o <video>
, especialmente útil para contenido que requiere flexibilidad o soporte multiplataforma.
Sintaxis básica
<object data="URL-del-recurso" type="tipo-MIME" width="ancho" height="alto" > <!-- Contenido alternativo (fallback) --> </object>
Atributos principales:
-
data
: URL del recurso a incrustar. -
type
: Tipo MIME del recurso (ej:image/png
,application/pdf
). -
width
/height
: Dimensiones del contenedor. -
name
: Nombre para referencias en formularios o scripts.
Casos de uso comunes
Incrustar un PDF
<object data="documento.pdf" type="application/pdf" width="800" height="600" > <p>Tu navegador no soporta PDFs. <a href="documento.pdf">Descárgalo aquí</a>. </p> </object>
Incrustar una imagen (alternativa a <img>
)
<object data="logo.svg" type="image/svg+xml" width="200" height="200" > <img src="logo.png" alt="Logo alternativo"> </object>
Incrustar contenido HTML
<object data="widget.html" type="text/html" width="300" height="200" > <p>Contenido no disponible. Visita <a href="widget.html">este enlace</a>.</p> </object>
Incrustar un video (menos común)
<object data="video.mp4" type="video/mp4" width="640" height="360" > <video controls> <source src="video.mp4" type="video/mp4"> Tu navegador no soporta videos. </video> </object>
Estilización y comportamiento
CSS: Aplica estilos al contenedor, pero no al contenido incrustado.
object { border: 2px solid #333; margin: 10px; }
JavaScript: Puedes interactuar con el objeto mediante el DOM:
const miObjeto = document.querySelector("object"); miObjeto.addEventListener("load", () => { console.log("Recurso cargado"); });
Fallback y accesibilidad
El contenido dentro de <object>
se muestra si el navegador no soporta el recurso. Es crucial para:
-
Accesibilidad: Los lectores de pantalla acceden al fallback.
-
Compatibilidad: Asegura funcionalidad básica sin plugins o soporte avanzado.
Ejemplo de fallback múltiple:
<object data="app.swf" type="application/x-shockwave-flash"> <object data="app.pdf" type="application/pdf"> <p>Descarga <a href="app.pdf">la guía en PDF</a>.</p> </object> </object>
Comparación con otras etiquetas
Etiqueta | Uso recomendado |
---|---|
<img> |
Imágenes simples (JPEG, PNG, SVG). |
<iframe> |
Incrustar páginas web completas. |
<video> |
Reproductores de video con controles nativos. |
<object> |
Recursos complejos o múltiples formatos (PDF, SVG). |
Errores comunes
-
Olvidar el atributo
type
:
Sin él, el navegador no puede determinar cómo manejar el recurso. -
Ignorar el fallback:
Siempre proporciona contenido alternativo para usuarios sin soporte. -
Usar
<object>
para imágenes simples:
Prefiere<img>
por su simplicidad y optimización SEO.
Consideraciones de seguridad
-
XSS (Cross-Site Scripting):
Evita incrustar contenido de fuentes no confiables. -
Plugins obsoletos:
No dependas de tecnologías como Flash o Java Applets (obsoletas).
Compatibilidad
-
Navegadores modernos: Soporte amplio, pero varía según el tipo de recurso.
-
PDFs: Chrome y Edge tienen soporte nativo; otros requieren plugins.
-
SVG/HTML: Ampliamente soportado.
Ejemplo avanzado: Incrustar SVG con interactividad
<object data="grafico.svg" type="image/svg+xml" width="400" height="400" id="svgObject" > <img src="grafico.png" alt="Gráfico estático"> </object> <script> document.getElementById("svgObject").addEventListener("load", () => { const svgDoc = document.getElementById("svgObject").contentDocument; const rect = svgDoc.querySelector("rect"); rect.addEventListener("click", () => { alert("Hiciste clic en el rectángulo SVG"); }); }); </script>
Conclusión
La etiqueta <object>
es una herramienta poderosa para incrustar recursos dinámicos y multimedia, siempre que se use con buenas prácticas:
-
Define siempre el
type
MIME. -
Proporciona contenido alternativo accesible.
-
Prioriza etiquetas específicas (como
<img>
) cuando sea posible.
Ejemplo final:
<object data="https://example.com/interactive-chart" type="application/xhtml+xml" width="600" height="400" > <p>Explora el <a href="https://example.com/interactive-chart">gráfico interactivo aquí</a>.</p> </object>
Con este tutorial, podrás integrar recursos complejos en tus proyectos HTML de manera eficiente y accesible.