HTML: iframes HTML
<iframe> (inline frame) permite incorporar outra página HTML dentro da página atual. Seja incorporando vídeos, mapas ou outras páginas web, iframes são uma ferramenta indispensável no desenvolvimento web.
1. Conceitos Básicos de iframe
Use <iframe src="URL"></iframe> para incorporar outra página web na página atual. Os atributos width e height controlam as dimensões de exibição:
▶ Exemplo
<!-- Incorpora uma página simples, com 600px de largura e 400px de altura -->
<iframe src="https://example.com" width="600" height="400">
Seu navegador não suporta iframes.
</iframe>
2. Atributos de iframe Explicados
Os iframes fornecem vários atributos para controlar o comportamento de incorporação:
src— O endereço URL da página a ser incorporadawidth/height— Define as dimensões em pixels do iframetitle— Fornece uma descrição para o iframe; muito importante para leitores de telaname— Dá um nome ao iframe, que pode ser usado comotargetpara links (<a>)
O atributo name combinado com target permite que os links abram dentro de um iframe:
▶ Exemplo
<!-- iframe com nome -->
<iframe src="about:blank" name="content-frame"
width="100%" height="300"></iframe>
<!-- Os links abrem dentro do iframe via target -->
<a href="https://www.wikipedia.org" target="content-frame">
Abrir a Wikipédia no iframe
</a>
<a href="https://www.example.com" target="content-frame">
Abrir Example no iframe
</a>
title não é opcional para iframes — os leitores de tela o anunciam para ajudar usuários com deficiência visual a entender o conteúdo incorporado. Mesmo que não seja visível na página, sempre adicione um title significativo a cada iframe.
3. Segurança de iframe — O Atributo sandbox
O atributo sandbox impõe restrições adicionais ao conteúdo dentro de um iframe e é uma medida de segurança importante. Ele pode restringir o envio de formulários, pop-ups, execução de scripts e outros comportamentos:
sandbox=""(vazio) — Ativa todas as restrições, forma mais rigorosasandbox="allow-scripts"— Permite execução de scripts, mas bloqueia outros comportamentossandbox="allow-scripts allow-forms"— Permite scripts e envio de formulários
<!-- Sandbox mais rigoroso: desativa todos os recursos avançados -->
<iframe src="https://example.com" sandbox=""></iframe>
<!-- Permite scripts, mas bloqueia envio de formulários e pop-ups -->
<iframe src="https://example.com" sandbox="allow-scripts"></iframe>
<!-- Permite scripts e formulários, mas ainda bloqueia pop-ups, navegação, etc. -->
<iframe src="https://example.com"
sandbox="allow-scripts allow-forms"></iframe>
4. Incorporação de Conteúdo de Terceiros
O uso mais comum de iframes na prática é incorporar conteúdo de serviços de terceiros, como vídeos do YouTube e mapas do Google:
▶ Exemplo
<!-- Incorporar um vídeo do YouTube -->
<iframe width="560" height="315"
src="https://www.youtube.com/embed/VIDEO_ID"
title="Player de Vídeo do YouTube"
allow="accelerometer; autoplay; clipboard-write;
encrypted-media; gyroscope; picture-in-picture"
allowfullscreen></iframe>
<!-- Incorporar um Google Mapa -->
<iframe width="600" height="450"
src="https://www.google.com/maps/embed?pb=..."
title="Mapa do Google"
allowfullscreen
loading="lazy"></iframe>
Ao incorporar conteúdo de terceiros, as plataformas geralmente fornecem código iframe pronto em suas opções de compartilhamento/incorporação — basta copiar e colar. Certifique-se de incluir o atributo title e loading="lazy" para otimizar o desempenho de carregamento.
5. Comunicação entre iframe e Página Pai
Quando o iframe e a página pai compartilham a mesma origem (mesmo protocolo, domínio e porta), você pode acessar diretamente o DOM um do outro via JavaScript. Para cenários entre origens, o HTML5 fornece a API postMessage para comunicação segura:
<!-- Página pai envia uma mensagem -->
<iframe src="https://outro-dominio.com/pagina"
id="myFrame" title="Página entre origens"></iframe>
<script>
var frame = document.getElementById('myFrame');
frame.contentWindow.postMessage('Olá, iframe!', 'https://outro-dominio.com');
</script>
<!-- Dentro do iframe, recebendo a mensagem (deve estar na página incorporada) -->
<script>
window.addEventListener('message', function(event) {
// Sempre verifique a origem!
if (event.origin !== 'https://dominio-pai.com') return;
console.log('Recebido:', event.data);
});
</script>
postMessage, nunca confie em nada além de event.origin. Sempre verifique a fonte da mensagem para evitar enviar dados confidenciais para domínios não confiáveis.
❓ Perguntas Frequentes
sandbox para restringir funcionalidades, allow para controle preciso de permissões, cabeçalho X-Frame-Options para evitar incorporação.sandbox faz?sandbox cria uma "sandbox" para o iframe, desabilitando todas as operações perigosas por padrão (scripts, formulários, popups, etc.). Você pode habilitar permissões gradualmente:sandbox="allow-scripts" permite JavaScript, sandbox="allow-forms" permite envio de formulário, sandbox="allow-same-origin" permite acesso a cookies. Múltiplas permissões são separadas por espaço. Recomendação:sempre use sandbox, só habilite permissões que realmente precisa.<embed>/<object>?<iframe> é especificamente para incorporar páginas HTML, com suporte completo a recursos (sandbox, postMessage, etc.). <embed> e <object> incorporam conteúdo não-HTML (como PDF, Flash, SVG). No HTML5, <embed> é uma tag vazia; <object> pode conter conteúdo de fallback (<param> e fallback). Recomendação:use <iframe> para páginas web, <embed> ou <object> para PDFs.📖 Resumo
<iframe>incorpora outra página HTML dentro da página atualsrcespecifica o endereço de incorporação;width/heightcontrolam as dimensõestitlefornece descrição de acessibilidade;namefunciona com o atributotargetsandboxrestringe funcionalidades dentro do iframe para maior segurança- YouTube, Google Maps e outros conteúdos de terceiros são comumente incorporados via iframes
postMessagepermite comunicação entre páginas pai e filho entre origens
📝 Exercícios
- Incorpore Seu Primeiro Vídeo: Encontre um vídeo no YouTube, copie o código de incorporação e cole no seu arquivo HTML. Certifique-se de adicionar o atributo
titleeloading="lazy". - Experimento com Sandbox: Crie um iframe, comece com
sandbox=""(o modo mais rigoroso) e, em seguida, ative gradualmenteallow-scriptseallow-forms, observando como o comportamento muda.