Etiqueta noframes en HTML: obsoleta y alternativas
La etiqueta <noframes> está obsoleta y no debe usarse en páginas nuevas. Ofrecía contenido alternativo para navegadores que no admitían los marcos de <frameset> o estaban configurados para no mostrarlos. Servía, por ejemplo, para acceder a una lección sin el marco del menú. Hoy se prepara una página completa con navegación normal y contenido disponible para todos; si hace falta una incrustación, se añade un enlace fuera de ella. El estándar vigente descarta esta arquitectura antigua.
Ejemplo histórico de noframes
Este fragmento permite reconocer código antiguo. Es inválido para autoría moderna y se muestra únicamente como documentación histórica; no debe ejecutarse como demostración.
<frameset cols="220,*">
<frame src="menu.html" title="Menú">
<frame src="leccion.html" title="Lección">
<noframes>
<body>
<p><a href="leccion.html">Leer la lección</a></p>
</body>
</noframes>
</frameset>
El diseño antiguo reservaba una columna al menú y otra a la lección. El enlace alternativo buscaba abrir leccion.html directamente cuando no se mostraban marcos. Era más útil ofrecer acceso al contenido que limitarse a pedir otro navegador. Esos nombres representan archivos del sitio antiguo, no recursos necesarios para probar esta guía.
Sintaxis y contexto históricos
En HTML 4.01 Frameset, <frameset> sustituía al <body> principal después de <head>. El <noframes> opcional se colocaba al final del conjunto de marcos; su modelo de contenido incluía un <body> alternativo, como en el fragmento. <noframes> tenía apertura y cierre; no era un elemento vacío.
Ese cuerpo alternativo podía organizar texto, encabezados, listas y enlaces. No debía repetir la arquitectura de marcos ni anidar otro <noframes>. HTML 4.01 Transitional también contemplaba <noframes> con contenido de flujo dentro de un documento convencional: es otro contexto histórico, no una autorización actual.
Mostrar la alternativa dependía de la capacidad o configuración del navegador para los marcos. No detectaba JavaScript desactivado ni la descarga fallida de leccion.html. Retirar <noframes> del documento antiguo quitaba esa vía de acceso; no reunía automáticamente el menú y la lección. Tampoco se debe esperar una emulación fiel de su funcionamiento en navegadores actuales.
Migración: una página útil para todos
Traslada el menú a una navegación normal y el contenido esencial al documento principal. Si había varias lecciones, cada una puede conservar una URL propia y compartir la navegación mediante una plantilla. Revisa las rutas y elimina destinos target que dependían de nombres de marcos.
Guarda este ejemplo completo como leccion.html, en UTF-8, y ábrelo en el navegador. Incluye sus estilos y todo su contenido; no necesita otros archivos, servidor ni JavaScript.
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Preparar una excursión</title>
<style>
body {
max-width: 55rem;
margin: auto;
padding: 1rem;
font-family: system-ui, sans-serif;
line-height: 1.6;
color: #172b3a;
background: #fff;
}
a { color: #074f85; }
:focus-visible { outline: 3px solid #074f85; outline-offset: 3px; }
nav { border-bottom: 1px solid #8798a4; }
</style>
</head>
<body>
<a href="#contenido">Saltar al contenido</a>
<header>
<h1>Preparar una excursión</h1>
</header>
<nav aria-label="Temas de la lección">
<ul>
<li><a href="#equipo">Equipo necesario</a></li>
<li><a href="#recorrido">Planear el recorrido</a></li>
</ul>
</nav>
<main id="contenido" tabindex="-1">
<section id="equipo">
<h2>Equipo necesario</h2>
<p>Prepara agua, protección para el sol y calzado adecuado.</p>
</section>
<section id="recorrido">
<h2>Planear el recorrido</h2>
<p>Consulta la distancia y acuerda un punto de regreso.</p>
</section>
</main>
</body>
</html>
El resultado es una página con título, navegación y dos temas, visibles sin elegir entre una versión con marcos y otra alternativa. Los enlaces <a> apuntan a secciones del mismo documento; leccion.html#recorrido permite abrir directamente el segundo tema. tabindex="-1" permite que el contenido reciba el foco al saltar a él, sin añadirlo al recorrido habitual de Tab.
Comprueba el ejemplo con estas acciones:
- Usa Tab y Enter para seguir «Saltar al contenido» y los enlaces de los temas. El destino debe corresponder al texto del enlace.
- Abre
leccion.html#recorridoy prueba Atrás después de seguir otro enlace: la navegación usa URL e historial normales. - Estrecha la ventana y desactiva JavaScript. Los textos y enlaces deben seguir disponibles.
- Retira el bloque
<style>. Cambia la apariencia, pero permanecen los encabezados, la navegación y la lección.
La migración exige mover el contenido, no renombrar <noframes>. En este documento nuevo no hay una etiqueta que active la alternativa: la información siempre forma parte de la página.
Atributos y errores frecuentes
<noframes> no tenía atributos específicos de activación. Atributos compartidos como id, class o lang identificaban, agrupaban o indicaban el idioma; no cambiaban el motivo para mostrar la alternativa. cols pertenecía a <frameset> y src a <frame>. La propiedad CSS display controla presentación y los manejadores de eventos ejecutan JavaScript: ninguno convierte <noframes> en un detector de fallos.
¿Noframes y noscript son equivalentes? No. <noframes> respondía a la disponibilidad de los marcos antiguos; <noscript> ofrece contenido cuando los scripts no están habilitados. Sustituir una por otra cambia la condición y puede esconder información que todas las personas necesitan.
¿Noframes sirve para un iframe? No. Si necesitas un <iframe>, coloca un enlace directo al documento incrustado fuera del marco, siempre disponible. Ni <noframes> ni <noscript> detectan que el servidor haya bloqueado esa incrustación. El modelo actual de <iframe> no ofrece el mecanismo alternativo de los marcos antiguos.
Para reconocer la página original, consulta <frameset>, que distribuía los marcos, y <frame>, que cargaba cada documento. No copies ese conjunto en una página nueva ni reserves la navegación esencial a una alternativa oculta.
Compatibilidad y fuentes
Fuentes revisadas el 3 de octubre de 2026. La posible conservación del elemento en un navegador no permite utilizarlo en autoría moderna. No dependas de su comportamiento heredado para ofrecer acceso al contenido.
El HTML Living Standard: funciones obsoletas fija su estado actual; W3C: contenido alternativo en HTML 4.01 documenta su sintaxis y contexto históricos. MDN: <noframes> complementa la explicación, confirma que no tiene atributos específicos y advierte sobre la retirada del soporte.