W3docs

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.

Perigo

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.
Informação

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.

Prática

Prática
Qual era o propósito original da tag <noframes> no HTML legado?
Qual era o propósito original da tag <noframes> no HTML legado?
Was this page helpful?