Tag HTML <noframes>
A tag <noframes> exibe conteúdo alternativo em navegadores sem suporte a frames. Veja exemplos e alternativas modernas.
A tag <noframes> definia o conteúdo de fallback exibido quando um navegador não conseguia renderizar um frameset. Junto com <frameset> e <frame>, ela fazia parte do antigo modelo de "frames" que dividia a janela do navegador em vários documentos independentes.
Não use <noframes>, <frameset> ou <frame> em novos projetos. Eles foram descontinuados no HTML5 (2014) e desde então foram removidos pelos navegadores modernos. Esta página existe apenas para referência — para leitura ou manutenção de código legado, não para criar nova marcação.
Esta página explica o que <noframes> fazia, por que foi removida e o que usar em seu lugar.
Para que servia o <noframes>
Na era dos frames, uma página era dividida em várias regiões, cada uma carregando seu próprio documento HTML. Alguns navegadores antigos (e muitos leitores de tela) não conseguiam exibir frames. O elemento <noframes> oferecia uma alternativa a esses usuários:
- Uma mensagem curta como "Seu navegador não suporta frames."
- Um link para uma versão sem frameset (página única) do site.
- Qualquer conteúdo no nível do
<body>como fallback utilizável.
Se o navegador suportava frames, o conteúdo de <noframes> era ignorado. O elemento era aninhado dentro de <frameset>, que por sua vez substituía o <body> da página.
Por que os frames estão obsoletos
Os frames causavam problemas graves e bem conhecidos que levaram à sua remoção:
- Marcadores e URLs quebrados — a barra de endereços exibia a URL do frameset, não o documento que o usuário estava realmente visualizando, portanto links e marcadores apontavam para o lugar errado.
- Má acessibilidade — os leitores de tela tinham dificuldade em transmitir vários documentos independentes em uma única janela.
- Prejuízo ao SEO — os mecanismos de busca indexavam documentos de frame individuais fora de contexto, sem a navegação ao redor.
- Sem responsividade — o dimensionamento fixo dos frames não se adaptava a telas de dispositivos móveis.
Por causa disso, todo o modelo de frames — e o <noframes> junto com ele — foi removido do padrão HTML.
O que usar em vez disso
Você não precisa de frames nem de um elemento de fallback. O HTML e CSS modernos cobrem todos os casos de uso que os frames já serviram:
- Layout de página — construa colunas, barras laterais e cabeçalhos com elementos HTML normais e CSS Flexbox ou Grid em vez de dividir a janela em regiões de frame.
- Incorporar outro documento — use o elemento
<iframe>para incorporar uma página (um mapa, vídeo ou widget externo) dentro de outra. Ao contrário do<frameset>, o<iframe>é totalmente suportado e não quebra a URL da página. - Cabeçalho/rodapé/navegação compartilhados — em vez de carregar um frame de navegação uma única vez, renderize a marcação compartilhada com uma engine de templates, um gerador de sites estáticos ou um componente JavaScript.
O elemento <iframe> é a única tag "semelhante a frame" que ainda faz parte do HTML. Se seu objetivo é incorporar conteúdo externo, use <iframe> — não <frameset>.
Sintaxe
A tag <noframes> vinha em pares. O conteúdo era escrito entre as tags de abertura (<noframes>) e fechamento (</noframes>), dentro de um <frameset>.
Exemplo da tag HTML <noframes> (legado, apenas para referência):
Tag HTML <noframes>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>Title of the document</title>
</head>
<frameset cols="50%,50%">
<frame src="https://www.w3docs.com/learn-html.html">
<noframes>Sorry, your browser doesn’t support frames. </noframes>
</frameset>
</html>Em um navegador compatível com frames da época, isso teria dividido a janela em duas colunas. Hoje, os navegadores ignoram os elementos <frameset> e <frame>, portanto a página é renderizada como se estivesse vazia — que é exatamente o motivo pelo qual essa marcação nunca deve ser usada em um novo projeto.
Suporte dos navegadores
Removido. O suporte a frames foi eliminado dos navegadores modernos. Não existe versão de Chrome, Firefox, Safari ou Edge em que escrever <frameset> / <frame> / <noframes> produza frames funcionais. Os elementos não fazem parte do padrão HTML atual e os validadores os marcam como obsoletos. Trate-os como um recurso histórico sem caminho a seguir.
Atributos
A tag <noframes> usava apenas os Atributos Globais. Assim como o próprio elemento, esses atributos estão obsoletos neste contexto.