2009-05-29 26 views
30

En un sistema basado en web que mantengo en el trabajo que se lanzó recientemente, hace un elemento Object para incrustar una segunda página web dentro de la página web principal. (Efectivamente la página web principal contiene el menú y la cabecera, y las páginas principales de aplicación se basan en el objeto)Uso de iframe u objeto tag para incrustar páginas web en otro

Por ejemplo

<object id="contentarea" standby="loading data, please wait..." 
    title="loading data, please wait..." width="100%" height="53%" 
    type="text/html" data="MainPage.aspx"></object> 

antiguas versiones de esta aplicación utilizar un IFRAME hacer esto sin embargo. Descubrí que al usar la etiqueta de objeto, la página web incrustada se comporta de manera diferente a cuando estaba hospedada previamente en un IFRAME. En IE, por ejemplo, las sugerencias de herramientas no parecen funcionar (¡publicaré una pregunta diferente sobre esto!), Y parece que la página incrustada no puede acceder a la página principal en el script, aunque sí puede si fuera un IFRAME .

Me dijeron que la razón para favorecer la etiqueta del objeto sobre el IFRAME es que el IFRAME está en desuso y por lo tanto no se puede confiar en las versiones futuras de los navegadores. Sin embargo, es cierto? ¿Es preferible usar la etiqueta Object sobre el iframe para incrustar páginas web? ¿O es probable que el IFRAME tenga un buen soporte en el futuro (mucho después de que sea viejo y gris, y más allá de la vida útil de la aplicación que mantengo)?

Respuesta

43

El IFRAME element es parte del upcoming HTML5 standard. Además, HTML5 está desarrollado por los principales proveedores de navegadores (Mozilla, Opera, Safari, IE), que básicamente garantiza que tendremos un elemento IFRAME en el futuro previsible. Algunos de ellos ya tienen soporte para algunos elementos HTML5, como AUDIO y VIDEO, y algunas nuevas API de JavaScript.

También es cierto que the OBJECT element is in the draft, pero eso se debe a que IFRAME y OBJECT tendrán diferentes propósitos. Los IFRAMES están diseñados principalmente para aplicaciones web de sandboxing.

Por lo tanto, mi consejo es utilizar IFRAME en lugar de OBJETO.

+1

+1 para referencias y aclarar que el objeto y el iframe hacen diferentes trabajos – annakata

8

IFRAMEs no forman parte del XHTML 1.0 Strict DTD. Son totalmente válidos en HTML 4 y XHTML 1.0 Transitional, creo. Por estas razones, IFRAME continuará recibiendo soporte durante mucho tiempo.

Muchos bookmarklets y códigos analíticos todavía usan IFRAME.

2

Aunque las especificaciones de W3C pueden indicar que la etiqueta IFRAME está en desuso, (en XHTML, al menos, de todos modos), los desarrolladores de navegadores no necesariamente siguen exactamente lo que dicen esas especificaciones (IE6 alguien?)

medida que el uso de IFRAMEs es tan frecuente en este momento, y el W3C parece no poder decidir si son parte del futuro o no (HTML 4.01 vs XHTML), estoy bastante seguro de que son la implementación más segura para casi todos los navegadores.

5

Si está incrustando una página HTML, aquí es una diferencia notable entre iframe y object:

  • con iframe actualizar src cambiará el historial del navegador (añadir una nueva entrada)
  • con object actualizar data no cambiará el historial del navegador

También parece que arrastra & drop d No funciona si la página está incrustada en la etiqueta object, pero funciona en la etiqueta iframe.Lo noté personalmente usando react-draggable, y puedo ver que alguien tuvo el mismo problema (https://stackoverflow.com/questions/31807848/replacing-iframe-with-object-tag-drag-and-drop-not-working)

Cuestiones relacionadas