Ir directamente al contenido de esta página

codexexempla.org

El elemento object como alternativa a iframe

Tabla de contenidos

  1. Introducción
  2. El elemento object
  3. Un ejemplo
  4. Soporte en navegadores

Introducción

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.

El elemento 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.

Un ejemplo

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:

Resultados de las pruebas de object en diversos navegadores
Explorer 6 Explorer 7 Firefox 2.0 Netscape 8 Opera 9 Safari 3 BETA
Sí, pero… Sí, pero… 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:

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.

Contacto

En virtud de la Ley Orgánica 15/1999 de Protección de Datos de Carácter Personal le informo de que los datos que proporcione no serán empleados para otro fin que el de responder a su mensaje. En especial, me comprometo a no cederlos a terceros ni a emplearlos para enviar información no solicitada.

Del blog de Digital Icon