Ir directamente al contenido de esta página
object
como alternativa a iframe
Si nos paramos a mirar la lista de elementos que integran la especificación de XHTML 1.1, comprobamos que iframe
ha desaparecido (inglés).
Los programadores de la vieja escuela se echarán las manos a la cabeza, pero no hay motivo de alarma: la alternativa estándar es emplear el elemento object
.
object
En la definición del elemento object
de la especificación de HTML 4.01 (inglés), encontramos dos atributos que son exactamente los que necesitamos: data
y type
Con respecto a data
, la especificación dice:
This attribute may be used to specify the location of the object's data, for instance image data for objects defining images, or more generally, a serialized form of an object which can be used to recreate it. […]
[Este atributo puede utilizarse para especificar la localización de los datos del objeto, por ejemplo los datos de imagen para objetos que definan imágenes, o más generalmente, formas serializadas de un objeto que puedan ser empleadas para recrearlo.]
Y para type
:
This attribute specifies the content type for the data specified by
data
. […][Este atributo especifica el tipo de contenido para los datos especificados en
data
.]
Simplificando, lo que la especificación nos dice es que los datos del objeto que se cargue dentro object
no están —en principio— sometidos a ninguna restricción, siempre y cuando se especifique el tipo (MIME) de los mismos.
Bien, sabemos que el tipo MIME de un documento HTML es text/html
, así que probemos.
Para comprobar si ésta es una alternativa viable, he creado una página de prueba en la que el usuario puede introducir un término a buscar. Al enviar la información, el servidor devuelve la misma página con el añadido de dos elementos object
en los que cargo las páginas de resultados hallados en Google y Yahoo!
El código no tiene ningún misterio:
<div class="resultado">
<object type="text/html" width="100%" height="300" id="resultados_google" data="la_URL_compuesta_para_Google_con_el_término_a_buscar">
<p>Si puede leer este mensaje es que su navegador no soporta correctamente el elemento <code>object</code></p>
</object>
</div>
<div class="resultado">
<object type="text/html" width="100%" height="300" id="resultados_yahoo" data="la_URL_compuesta_para_Yahoo_con_el_término_a_buscar">
<p>Si puede leer este mensaje es que su navegador no soporta correctamente el elemento <code>object</code></p>
</object>
</div>
Para la página de prueba he especificado la DTD XHTML 1.1. Sin embargo, lo relevante es si el navegador soporta correctamente object
, por lo que se podría aplicar igualmente para un documento XHTML 1.0 Estricto, XHTML 1.0 Transicional, HTML 4.01 Estricto e incluso en quirks mode. Así pues, veámos qué pasa con los navegadores.
Ésta es la prueba de fuego, y el resultado es éste:
Explorer 6 | Explorer 7 | Firefox 2.0 | Netscape 8 | Opera 9 | Safari 3 BETA |
---|---|---|---|---|---|
Sí, pero… | Sí, pero… | Sí | Sí | Sí | No |
Sí, en Explorer funciona… bajo ciertas condiciones, por las políticas de seguridad relacionadas con los componentes ActiveX, que es como interpreta los contenidos de iframe
:
object
.En el caso de Safari 3, sólo he puedo comprobar la versión de Windows, pero si alguien puede darme más información, le estaré muy agradecido.