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
typeMIME. -
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.