Adios IFRAME, hola OBJECT

Cuando necesitamos incluir un objeto HTML externo incrustado en una página podemos recurrir al tag IFRAME.
Si el objeto que necesitamos incrustar es un SWF se suele recurrir a OBJECT y EMBED.

Antes de seguir, es bueno recordar la historia de los elementos IMG, EMBED y OBJECT.

OBJECT como sustituto de IFRAME

Con IFRAME podemos embeber un tipo de documento HTML. Pero si atendemos a la definición de OBJECT veremos que podemos embeber varios tipos de documento como: HTML, SWF, VIDEO, IMAGEN (ver ejemplos).
Teniendo en cuenta lo anterior, IFRAME puede verse como un TAG redundante.

Por otro lado en la versión XHTML Strict, el DTD no admite el tag IFRAME. Al fin y al cabo forma parte del pasado y la W3C siempre ha recomendado el uso de un OBJECT para incrustar los diferentes documentos, tanto si es vídeo, como imagen, como una página html.

Además hay que tener cuidado con IFRAME en Firefox, generado de forma dinámica podemos tener problemas (Bug 279048).

IE como de costumbre va contracorriente

Si usamos OBJECT en Internet Explorer, debemos tener en cuenta que no reconoce el atributo type:

<object type="text/html" ...

En su lugar tenemos que indicar un atributo classid:

<object classid="clsid:F08DF954-8592-11D1-B16A-00C0F0283628" ...

De todas formas con varias pruebas que hice he comprobado que el comportamiento es irregular en las diferentes versiones de la familia Internet Explorer (6, 7, 8, 9).
En cambio con IFRAME, Internet Explorer se maneja de maravilla :D todas las versiones interpretan y dan el mismo resultado.

IFRAME para IE, OBJECT para el resto

Al final pienso que la mejor opción cross-browser es mantener el IFRAME para la familia Internet Explorer y recuperar el OBJECT para el resto de navegadores (Firefox, Opera, Safari, Chrome).

Para hacer la bifurcación he recurrido a los comentarios condicionales de IE:

<!--[if IE]>
    <iframe src="page.htm">contenido alternativo</iframe>
<![endif]-->
<!--[if !IE]> <-->
    <object type="text/html" data="page.htm">contenido alternativo</object>
<!--> <![endif]-->

Conclusión, voy abrazando OBJECT mientras digo adiós al IFRAME a excepción de IE :P

Etiquetas: ,

3 Comentarios

  1. Buena apreciación, nunca había caído en la cuenta de que la etiqueta OBJECT también funcionaba con archivos HTML. Todo será cuestión de ir probando, aunque supongo que el IFRAME nunca terminará por desaparecer completamente.

  2. Guau muy buen dato. iframe es la única razón por la que sigo usando xhtml trasicional y no estricto :)

    Leonardo M

  3. En un documento html5 no me valida W3 los comentarios puestos alrededor de

    Aparecen los siguientes errores:

    Error Line 83, Column 7: Premature end of comment. Use –> to end a comment properly.

    Error Line 83, Column 11: Bogus comment.

    Warning Line 83, Column 19: The document is not mappable to XML 1.0 due to two consecutive hyphens in a comment.

    Warning Line 83, Column 20: The document is not mappable to XML 1.0 due to a trailing hyphen in a comment.

    Hay alguna solución para poder validar?

    troman

Dejar un comentario