O Código
Para este tutorial, vamos precisar de dois ficheiros HTML: um ficheiro pai onde colocamos o iframe, e um ficheiro filho contendo o conteúdo do iframe.
child.html
O nosso ficheiro filho conterá um simples gerador de texto fictício, onde as pessoas podem clicar num botão para adicionar outro parágrafo do texto do lorem ipsum.
Como este tutorial é sobre o iframe, e não a funcionalidade do que está nele, sinta-se livre para copiar e colar o seguinte em child.html
:
Você pode experimentar o código acima neste CodePen:
parent.html
Podemos agora inserir o nosso iframe em parent.html
.
Adicionar o habitual código HTML5 da placa de caldeira, e depois inserir o seguinte entre as tags do corpo:
<iframe src="child.html" style="width:100%;border:none;"></iframe>
Mas aqui encontramos o nosso problema. Porque definimos overflow: hidden
, os botões e metade do primeiro parágrafo desaparecem.
E se não tivéssemos definido overflow: hidden
veríamos duas barras de rolagem, como na imagem acima. Para resolver isto, precisamos de enviar mensagens de child.html
para a janela pai!
child.html
Então, de volta em child.html
, precisamos de adicionar novos ouvintes de eventos à secção de scripts.
Precisamos notificar o elemento pai da altura do iframe:
- sempre que ele carregar,
- sempre que a janela for redimensionada, e
- sempre que um botão for pressionado.
Quando cada um desses eventos ocorre, vamos acionar uma função chamada sendPostMessage
.
Põe o seguinte código imediatamente antes do fechamento <script>
tag: