Acerca de este problema HTML
El elemento <iframe> está diseñado para incrustar otro contexto de navegación (esencialmente un documento anidado) dentro de la página actual. Según la especificación HTML, el modelo de contenido de <iframe> es nada — no debe contener ningún nodo de texto o elementos hijo. Cualquier texto colocado directamente dentro de las etiquetas <iframe> es HTML inválido.
Históricamente, algunas versiones anteriores de HTML permitían texto de respaldo dentro de <iframe> para navegadores que no soportaban iframes. Este ya no es el caso en HTML moderno. Todos los navegadores actuales soportan <iframe>, por lo que no hay necesidad de contenido de respaldo. El validador W3C marca esto como un error porque el texto o elementos entre las etiquetas <iframe> violan la especificación HTML actual.
Hay dos formas válidas de especificar el contenido que un iframe debe mostrar:
-
Atributo
src— Proporciona una URL que apunte al documento que quieres incrustar. -
Atributo
srcdoc— Proporciona contenido HTML inline directamente como el valor del atributo. El HTML se escribe como una cadena con el escape de caracteres apropiado (ej.,<para<y"para"si usas atributos entre comillas dobles).
Si estabas usando texto dentro de <iframe> como descripción o respaldo, considera usar el atributo title en su lugar para proporcionar una etiqueta accesible para el contenido incrustado.
Ejemplos
❌ Inválido: texto dentro del elemento <iframe>
<iframe>Some content here</iframe>
<iframe><p>This is my embedded content.</p></iframe>
Ambos ejemplos activarán el error “Texto no permitido en el elemento iframe en este contexto”.
✅ Válido: usando el atributo src
<iframe src="https://example.com" title="Example website"></iframe>
Esto carga el documento en la URL especificada dentro del iframe.
✅ Válido: usando el atributo srcdoc
<iframe srcdoc="<p>This is my embedded content.</p>" title="Inline content"></iframe>
Esto renderiza el HTML inline proporcionado en el atributo srcdoc. Ten en cuenta que los caracteres especiales HTML deben escaparse cuando el valor del atributo está encerrado entre comillas dobles.
✅ Válido: estilo auto-cerrante (elemento vacío)
<iframe src="https://example.com" title="Example website"></iframe>
El elemento <iframe> requiere una etiqueta de cierre, pero no debería aparecer nada entre las etiquetas de apertura y cierre. Mantener el elemento vacío es el enfoque correcto.
✅ Válido: añadiendo una etiqueta accesible con title
Si tu intención original era describir el contenido del iframe para usuarios o tecnologías asistivas, usa el atributo title:
<iframe src="/embedded-report.html" title="Monthly sales report"></iframe>
El atributo title proporciona una etiqueta que los lectores de pantalla pueden anunciar, mejorando la accesibilidad del contenido incrustado.
Encuentra problemas como este automáticamente
Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.