Atributo sin fisuras iFrame de HTML5

en HTML5, el iframe tiene nuevos atributos como ‘seamless’ que deberían eliminar los bordes y las barras de desplazamiento. Lo probé, pero parece que no funciona, todavía puedo ver las barras de desplazamiento y las fronteras (estoy usando Google Chrome como navegador), aquí está mi código:

 

¿Alguna idea de por qué no está funcionando?

Una pregunta más, ¿es posible orientar una sección específica de la página dentro del iframe?

No es compatible correctamente todavía.

Chrome 31 (y posiblemente una versión anterior) admite algunas partes del atributo, pero no es totalmente compatible.

Actualizado: octubre de 2016

El atributo seamless ya no existe. Originalmente se montó para incluirse en la primera especificación HTML5, pero posteriormente se eliminó. Un atributo no relacionado del mismo nombre hizo un breve cameo en el borrador de HTML5.1, pero también fue descartado a mediados de 2016:

Así que creo que la esencia de todo esto, tanto desde el lado del implementador como desde el lado del desarrollador web, es que la seamless tal como se especifica no parece ser lo que alguien quería comenzar. O al menos es más de lo que alguien realmente quería. Y de todos modos, como dice @annevk , parece que ha pasado mucho tiempo “superado por los acontecimientos” a la luz de Shadow DOM.

En otras palabras: purgue el atributo seamless de su memoria y pretenda que nunca existió.

Para la posteridad, aquí está mi respuesta original de hace cinco años:

Respuesta original: abril de 2011

El atributo está en modo borrador en este momento. Por ese motivo, ninguno de los navegadores actuales lo respalda todavía (ya que la implementación está sujeta a cambios). Mientras tanto, lo mejor es usar CSS para quitar los bordes / barras de desplazamiento del iframe:

 iframe[seamless]{ background-color: transparent; border: 0px none transparent; padding: 0px; overflow: hidden; } 

Hay más en el atributo seamless de lo que se puede agregar con CSS: parte del razonamiento detrás del atributo era permitir que el contenido nested heredara los mismos estilos aplicados al iframe (actuando como si el documento incrustado fuera uno grande nested dentro del elemento, por ejemplo).

Por último, las versiones de Internet Explorer (8 y anteriores) requieren atributos adicionales para eliminar los bordes, las barras de desplazamiento y el color de fondo:

  

Naturalmente, esto no valida. Entonces depende de usted cómo manejarlo. Mi enfoque (exigente) sería olfatear la cadena del agente y agregar los atributos para las versiones de IE anteriores a 9.

Espero que ayude. 🙂

De acuerdo con la última recomendación de HTML5 del W3C (que probablemente sea el estándar final de HTML5) publicada hoy, ya no hay ningún atributo integrado en el elemento iframe . Parece haber sido eliminado en algún lugar del proceso de estandarización.

Según caniuse.com, ningún navegador importante admite este atributo (nunca más), por lo que probablemente no deberías usarlo.

Es posible utilizar el atributo semless en este momento, aquí encontré un artículo en alemán http://www.solife.cc/blog/html5-iframe-attribut-seamless-beispiele.html

y aquí hay otra presentación sobre este tema: http://benvinegar.github.com/seamless-talk/

Debe usar el método window.postMessage para comunicarse entre el elemento primario y el iframe.

Pensé que esto podría ser útil para alguien:

en la versión 32 de Chrome, aparece un borde de 2 píxeles alrededor de iframes sin el atributo seamless. Se puede eliminar fácilmente agregando esta regla de CSS:

 iframe:not([seamless]) { border:none; } 

Chrome usa el mismo selector con estos estilos predeterminados de agente de usuario:

 iframe:not([seamless]) { border: 2px inset; border-image-source: initial; border-image-slice: initial; border-image-width: initial; border-image-outset: initial; border-image-repeat: initial; } 

iO8 ha eliminado el soporte para el atributo de iframe seamless.

  • Probado en Safari, HomeScreen, nuevo WKWebView y UIWebView.

Detalles completos y revisión del rendimiento de otros cambios de iOS 8:

  • Cambios de iOS8 en la lista de correo de Cordova
  • Blog de Sencha.com: Apple muestra amor por HTML5 con iOS 8

Solo necesitas escribir

sin costura

en tu código No hay necesidad de:

seamless = “seamless”

Me acabo de enterar de esto yo mismo.

EDITAR – esto no elimina las barras de desplazamiento. Extrañamente

scrolling = “no” todavía parece funcionar en html5. He intentado utilizar la función de desbordamiento con un estilo en línea recomendado por html5, pero esto no funciona para mí.

Utilice el atributo frameborder en su iframe y configúrelo en frameborder = “0”. Eso produce la apariencia perfecta. Ahora quizás quieras decir que quiero que el iframe nested controle, más bien tengo barras de desplazamiento. Luego, necesita batir un archivo de script de JavaScript que calcule la altura menos los encabezados y configure la altura. Debounce es el complemento de javascript necesario para asegurarse de que el tamaño funciona correctamente en los navegadores más antiguos y, a veces, en cromo. Eso te llevará en la dirección correcta.

Aún en 2014, iframe sin fisuras no es totalmente compatible con todos los principales navegadores, por lo que debe buscar una solución alternativa.

En enero de 2014, iframe sin problemas aún no es compatible con Firefox ni IE 11, y es compatible con Chrome, Safari y Opera (la versión de webkit)

Si desea comprobar esto y otras opciones más compatibles en detalle, el sitio de prueba de HTML5 sería una buena opción:

http://html5test.com/results/desktop.html

Puede consultar diferentes plataformas, en la sección de puntaje puede hacer clic en cada navegador y ver qué se admite y qué no.

No pude encontrar nada que cumpliera con mis requisitos, ya que se me ocurrió este script (depende de jQuery):

https://gist.github.com/invernizzie/95182de86ea9dc5daa80

Cambiará el tamaño del iframe al tamaño de la ventana gráfica (teniendo en cuenta un contenido más amplio). Se podría utilizar una mejora para usar la altura de la ventana gráfica en lugar de la altura del contenido, en el caso de que la primera sea más grande.