¿Por qué los marcos quedaron obsoletos en HTML5, pero no en iFrames?


67

¿Por qué los marcos quedaron obsoletos en HTML5, pero no en iFrames? Después de todo, casi no hay diferencia entre los dos. En muchos casos, usar cualquiera de ellos daría el mismo resultado (perdón si estoy equivocado)?



gracias por el enlace, pero cuál es la pequeña diferencia entre los dos, que los iframes no quedaron en desuso.

1
¿Porque los marcos fueron una idea terrible desde el principio pero los iframes tienen algunos casos de uso legítimos?
GordonM

Respuestas:


81

Hay un par de ideas falsas en tu publicación. Primero, los elementos framey framesetno están en desuso en HTML5, son obsoletos (es decir, se han eliminado por completo).

Segundo, los elementos framey framesetno son lo mismo que el iframeelemento, ni dan el mismo resultado:

  • El framesetelemento reemplaza al elemento del cuerpo en las páginas como un medio para incluir un modelo de documento diferente para las páginas web: son malas para la usabilidad y accesibilidad, y lo que pretendían lograr ha sido reemplazado por CSS y el desarrollo ubicuo del lado del servidor.

  • El iframeelemento, por otro lado, no reemplaza el cuerpo de una página. Actúa como un medio para incluir un nuevo contexto de navegación incrustado dentro de un bloque de contenido. No sufre los mismos problemas de usabilidad o accesibilidad que el modelo de conjunto de marcos y se usa en casi cualquier lugar donde se necesita incluir un contexto de navegación incrustado (los widgets son el ejemplo más prolífico). 1

El iframeHTML5 también adquiere características adicionales, ya que puede ser protegido , permitiendo que el documento padre decida qué se ejecuta dentro de él. Esto permite cierta medida de seguridad para el documento principal (y los visitantes del documento principal) al incrustar contenido no confiable.


Notas

Nota 1: el objectelemento se superpone un poco con el iframeelemento, pero tiene un modelo de contenido diferente (que está destinado principalmente a complementos), tiene su propio conjunto de advertencias y no tiene los atributos de sandboxing iframeque tiene el elemento.


8
¿Por qué los elementos del conjunto de marcos son malos para la "usabilidad" y la "accesibilidad", pero los elementos del marco no lo son?
meriton - en huelga

18
@meriton El conjunto de marcos construye una página con múltiples documentos, todos con la misma prioridad: esto provoca desafíos para los lectores de pantalla que no saben en qué documento enfocarse en un momento específico. Los elementos de iframe, por otro lado, simplemente se incrustan en una sola página: no es diferente a tener una imagen incrustada.

9
Desafíos para los lectores de pantalla: todas las personas ciegas con las que he hablado han dicho que prefieren que la navegación esté atrapada en un marco separado (no iFrame) porque pueden ignorarlo y solo leerlo cuando lo deseen. El verdadero culpable de los lectores de pantalla es Javascript y AJAX, que hace que las páginas sean completamente inutilizables con los lectores de pantalla actuales (bueno, mi información tiene aproximadamente 10 meses). Mi experiencia personal con lectores de pantalla lo respalda.
GlenPeterson

44
Me he estado preguntando si muchas de las aserciones de accesibilidad a menudo solicitadas en 2005 no se han retrasado para una actualización. Gracias por la disidencia en eso.
Erik Reppen

1
@GlenPeterson se puede lograr el mismo efecto sin elemento de marco utilizando CSS para que el elemento de bloque se fije en la ventana gráfica. Así es como debe hacerse si desea ese tipo de navegación. Tiene más sentido
netrox

8

Los marcos (conjunto de marcos) actúan como documento. Se elimina porque rompe la estructura y la navegación de los documentos HTML. P.ej. tiene enlaces en un marco, contenido en el otro, no puede abrir el enlace desde la página en una nueva ventana, no puede enlazar a una subpágina específica, etc.

Por otro lado, los iframes no romperán nada si se usan correctamente porque están destinados al contenido de sandbox (por ejemplo, anuncios).


7

Los conjuntos de marcos a menudo se usan de manera que rompen el principio fundamental de la Web: que cada documento tiene una única URL. Esto lleva a problemas con enlaces, marcadores, motores de búsqueda, etc.

El uso típico de un conjunto de marcos sería un marco en la parte superior con un logotipo o encabezado, un marco al lado con un menú y un marco de contenido. Pero los motores de búsqueda indexan páginas individuales, por lo que cuando encuentre alguna página en Google, se vincularía directamente a la página de contenido sin el conjunto de marcos, por lo que perderá la navegación. El problema con los enlaces y marcadores es que normalmente desea vincular o marcar una página de contenido en particular dentro del conjunto de marcos, sin perder el conjunto de marcos en sí. La no es una manera fácil de hacer eso.

La razón por la que los conjuntos de marcos se hicieron populares en primer lugar fue porque permitieron un encabezado y un menú posicionados estáticamente con un área de contenido desplazable. Pero eso se puede lograr mucho más fácilmente con CSS hoy. Además, los marcos le permitieron usar elementos comunes como logotipos y menús en varias páginas sin usar ninguna codificación del lado del servidor. Esto fue una ventaja en un momento en que la codificación del lado del servidor era tediosa y propensa a errores (es decir, scripts CGI), y muchos hosts no permitían la creación de secuencias de comandos del lado del servidor. Hoy en día, con Content Management Systems (CMS) y mejores plataformas del lado del servidor, esto se maneja mucho mejor en el lado del servidor.

Básicamente, no hay ventajas al usar un conjunto de marcos, solo muchos problemas.

Los IFrames se pueden usar de la misma manera que se usaron los conjuntos de marcos, y en ese caso también conducen a los mismos problemas. Pero también hay muchos usos legítimos de iframes que no conducen a los mismos problemas.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.