2009-04-16 19 views
78

Recibiendo mensajes contradictorios sobre eso, espero que no. No puedo imaginar apoyo para que se detenga, ya que un montón de sitios los usan.¿Están IFrames (HTML) obsoletos?

Algunas preguntas adicionales acerca de que:

  1. ¿por qué deberían eliminar esta etiqueta?
  2. ¿Alguna alternativa para ello?

Respuesta

49

En mi opinión el W3C saltó al cañón en dumping iframes de los tipos estrictos de HTML y XHTML doctypes. En teoría, usaría el elemento <object> para agregar objetos extraños a su documento, pero las diferencias y limitaciones del navegador han hecho que esto no sea un comienzo para muchos desarrolladores. Con el HTML 5 mucho más pragmático (que sigue siendo un borrador), los iframes vuelven e incluso tienen dos nuevos atributos: seamless, y el intrigante sandbox.

+0

Impresionante, solo espero que los navegadores comiencen a admitir las cargas de archivos AJAX para que no tengamos que usar iframes o flash para eso. – Xeoncross

+0

@Xeoncross Firefox y Chrome hacen: https://developer.mozilla.org/en/Using_files_from_web_applications – chesles

22

IFrames no son obsoletos, pero las razones para usarlos son raras.

razones para el uso de iframes:

  • Es muy bueno para amurallar cosas de otras personas de otros dominios, pero no se integra sin problemas. (hojas de estilo, javascript, etc.)
  • La integración de multimedia a veces se puede hacer más fácilmente a través de un iframe en lugar de usar la etiqueta de inserción.
  • Realmente, realmente casos especiales como el caso de Gmail donde lo están utilizando para la gestión de sonidos y la historia.

También respondería que no hay necesidad de eliminar iframes, es una etiqueta necesaria y estará disponible por un tiempo.

7

IFrames se usan mucho con AJAX. GMail, por ejemplo, usa nueve IFrames ocultos, creo.

+5

Cuento cinco iframes. Uno no está oculto, y de hecho, uno de ellos es casi todo el punto de vista. IFrames no se utilizan con Ajax normalmente (de todos modos, no en ninguno de los marcos principales). Gmail usa iframes para cosas como: rastreo de historial, sonido (impar) y algún tipo de dibujo de lienzo. – cgp

+0

Estaba pasando por un artículo que leí hace unos años. –

72

La compatibilidad con sigue en HTML 5, por lo que no creo que esto cambie en el futuro cercano.

para responder a sus otras preguntas:

  1. s (como marcos en general) son la mayor parte del tiempo no fácil de usar:
    • No permiten el acceso fácil del contenido de el marco a través de una URL (sin perder el contenido al menos fuera del marco).
    • Most "technophobe" los usuarios están irritados por los marcos.
    • Por lo que yo sé que son más lentos para hacer para los navegadores
  2. alternativas incluyen la generación de páginas dinámicas (SSI, PHP, Rails y así sucesivamente) y el uso de JavaScript/AJAX para cambiar el contenido de, por ejemplo, a <div>

Para ser claros: estoy hablando de como elemento de interfaz.No es un elemento oculto para cargar otras cosas como, por ejemplo, Google Mail sí.

+28

+1 por el hecho de que Google está usando iframes para fines altamente especializados. – cgp

2

Acabo de cambiar un sitio de un Frameset normal a Iframes porque los marcos normales no podían hacer lo que necesitaba. No causó problemas con el resto de la base de código.

23

Iframes son obsoletos para el diseño de página. Nunca los use en lugar de un buen diseño CSS, incluso el diseño basado en tablas es mejor.

buenas razones para utilizar marcos flotantes son:

  • anuncios: adwords, por ejemplo, utiliza esta técnica, es bueno para encapsular - ad css no destruirá su página.
  • iframe oculto: puede ser utilizado durante cientos cosas útiles, como el seguimiento, ajax-alternativo, etc.
+33

*** NO use iframes para AdWords, es una violación de TOS. *** http://www.scribd.com/doc/97655/15-Common-Mistakes-by-Google-Adsense-Publishers-that-Violate-Terms-of-Service – cgp

+34

altCognito: AdWords usa iframes, no yo:) No quise poner el ifword de adword en otro iframe. – Thinker

+7

Sé que es un error común (de ahí todos los artículos), así que quise marcarlo para asegurarme de que la gente entendiera lo que estaba diciendo. – cgp

5

En mi anterior empresa, le ofrecemos una aplicación alojada que los clientes integrar en sus propios sitios web . A veces, usarían un IFrame para hacer esto, ajustando nuestra página alojada en sus diseños existentes. A veces esto incluso se hizo sin problemas (es decir, el IFrame no tenía bordes ni barras de desplazamiento, simplemente parecía parte de la página). Considere que este es un buen uso de la etiqueta.

+0

Iframes es imprescindible al tratar con las cosas que debe colocar en los sitios web de los clientes con su propio estilo y Javascript, para que el código del usuario no se rompa. CSS puede anularse fácilmente y JS puede causar conflictos a veces (en casos excepcionales), por lo que es mejor utilizar un enfoque de "Sistema cerrado". – vsync

5

Pueden ser extremadamente útiles en algunas circunstancias, pero son limitadas. En particular, incorporando funcionalidad común en múltiples sitios.

Por ejemplo, tengo un cliente que ejecuta varios sitios de comercio electrónico de productos escoceses. Como parte de esto, hemos desarrollado un par de aplicaciones simples para localizar posibles nombres de clanes de su apellido o de su elección de tartanes (ríete si lo deseas, pero los tartanes valen $ 700 millones al año para nuestra economía). La base de datos detrás de esto es sorprendentemente grande (casi diez mil filas en las tablas de nombres básicos y tartanes) y regularmente actualizada.

Tenemos las aplicaciones configuradas para ejecutar en un sitio web y luego las incorporamos a nuestros otros sitios web utilizando un iframe, permitiendo el paso de parámetros de javascript simple para que podamos integrar la selección de un tartán o clan con funcionalidad en el sitio de inserción . El iframe está configurado como no frontera, por lo que parece ser completamente transparente para el usuario final.

Por supuesto que habría otras maneras de hacerlo, pero el uso de un iframe es simple y robusto. Y ciertamente no es obsoleto.

7

IFrames no están muertos, pero Frameset/Frames están muriendo.

En las 2 últimas versiones de IE (IE7/IE8) el aumento de tamaño de marcos (no IFrames) ha creado resultados desastrosos.

Por supuesto use IFrames, pero en mi humilde opinión permanezco alejado de Framesets/Frames.

4

La especificación de gadget de Google actualmente se basa en marcos flotantes: http://code.google.com/apis/gadgets/docs/spec.html

Actualmente ellos son la única forma sencilla para proporcionar aislamiento para aplicaciones de JavaScript que se extraen de múltiples dominios/proveedores.

También muchos de los widgets que las personas incorporan en sus sitios web de terceros usan iframes.

Si bien tienen sus inconvenientes, los iframes proporcionan una solución pragmática a problemas comunes en la web. Tendría que adivinar que estarán disponibles por algún tiempo.

0

Trabajo para una empresa que usa marcos para todo, desde menús desplegables, listas, bloques de contenido, etc. solo para cubrir las complejidades de los formularios web .net. La aplicación es muy lenta y solo se ejecuta en IE. No hagas esto

5

Caballos para cursos ... <iframe> s son como cualquier otra cosa ... para el propósito correcto son la herramienta adecuada; para el propósito equivocado, son un hack feo, o algo peor.

En Ajax, <div> s suelen ser el contenedor más apropiado. En algunos lugares, la actividad de transmitir contenido externo como parte de su propio sitio, tal como admite <iframe> s, es inapropiada.

Mi equipo utilizó un <iframe> el otro día como una forma ideal para dar a los usuarios acceso a su HTML historia de correo electrónico - los correos electrónicos eran completas <html> páginas que hemos querido insertar fácilmente en nuestra Plantilla Web . <iframe> s fueron absolutamente perfectos para presentar esos datos] '.

Por otro lado, <iframe> s casi siempre deben ser retirados o discapacitados de cualquier contenido enviado por el usuario, que se emite de nuevo en el sitio, ya que en ese contexto son un gran problema de seguridad.

2

Los problemas de cumplimiento y seguridad también pueden llevarlo a utilizar Iframes; Los carritos de compras son implementaciones populares basadas en IFrame cuando desea incorporar visualmente un carrito de compras como parte de algunas páginas web sin asumir la responsabilidad total del procesamiento de pagos.

Comúnmente ofrecemos un iframe para integrar nuestros productos y clientes de eCommerce, así como lo fácil que puede ser.

12

He visto muchos foros que sugieren la etiqueta Object como reemplazo de IFrame, que probablemente funcione en la mayoría de los casos.

Por ejemplo, tenía un PDF que se muestra en un IFrame (porque había otras cosas que debemos mostrar en la página además del PDF) y pudimos mostrarlo bien usando Object.

¿Qué fue:

<iframe id="confirmed_pdf" class="current_pdf" src="/prescriptions/show_pdf?id=123" height="570" width="480"></iframe> 

Se convirtió en:

<object id="confirmed_pdf" class="current_pdf" data="/prescriptions/show_pdf?id=123" type="application/pdf" height="570" width="480"> 
    <p>[Show this message if displaying the PDF did not work]</p> 
</object> 

Pero a objeto no era un sustituto adecuado para llenar el requisito de ser capaz de imprimir solamente la parte de la página PDF.

un iframe es como su propia ventana dentro de la página (una ventana dentro de una ventana, básicamente), y una vez que el objeto de la ventana, puede llamar a .print() sobre ella, como:

jQuery("#confirmed_pdf").contentWindow.print(); 

IFrame tiene una propiedad contentWindow, eso es lo que hace que imprimir solo esa parte sea posible. Object no tiene una propiedad contentWindow, por lo que no hay forma de imprimir solo la sección de la página.

Por lo tanto, parece que si solo está usando IFrame para mostrar algo, existen otras etiquetas como Object que se pueden usar en su lugar. Pero si necesita interactuar con los contenidos del IFrame de ciertas maneras, entonces IFrame puede ser necesario.