Kod
Do tego samouczka będziemy potrzebować dwóch plików HTML: pliku rodzica, w którym umieścimy ramkę iframe, oraz pliku dziecka zawierającego zawartość ramki iframe.
child.html
Nasz plik dziecka będzie zawierał prosty generator tekstu, w którym ludzie będą mogli kliknąć przycisk, aby dodać kolejny akapit tekstu lorem ipsum.
Jako że ten tutorial dotyczy iframe, a nie funkcjonalności tego, co się w nim znajduje, nie krępuj się skopiować i wkleić poniższego do child.html:
Możesz wypróbować powyższy kod w tym CodePen:
parent.html
Możemy teraz wstawić naszą ramkę iframe do parent.html.
Dodajemy zwykły kod HTML5 boilerplate, a następnie wstawiamy następujące elementy pomiędzy znaczniki body:
<iframe src="child.html" style="width:100%;border:none;"></iframe>
Ale tutaj napotykamy nasz problem. Ponieważ ustawiliśmy overflow: hidden, przyciski i połowa pierwszego akapitu znikają.
A gdybyśmy nie ustawili overflow: hidden, zobaczylibyśmy dwa paski przewijania, jak na obrazku powyżej. Aby rozwiązać ten problem, musimy wysłać wiadomości post z child.html do okna nadrzędnego!
child.html
Więc, wracając do child.html, musimy dodać nowych słuchaczy zdarzeń do sekcji skryptu.
Musimy powiadomić element nadrzędny o wysokości ramki iframe:
- przy każdym załadowaniu,
 - przy każdej zmianie rozmiaru okna oraz
 - przy każdym naciśnięciu przycisku.
 
Kiedy wystąpi każde z tych zdarzeń, wywołamy funkcję o nazwie sendPostMessage.
Następujący kod umieść tuż przed zamykającym znacznikiem <script>:
Teraz stwórzmy naszą funkcję sendPostMessage().
Chcemy zmierzyć wysokość elementu o identyfikatorze container. Jeśli (i tylko jeśli) wysokość się zmieni, chcemy wysłać wiadomość o nazwie frameHeight do okna nadrzędnego, powiadamiając je o aktualizacji.
Następujący kod powinien znaleźć się powyżej tego, co właśnie napisaliśmy:
Drugi argument metody postMessage reprezentuje pochodzenie docelowe: nazwę hosta okna nadrzędnego.
Jest to użyteczne dla bezpieczeństwa, aby upewnić się, że wiadomość jest wysyłana tylko do określonych domen, ale dla celów rozwojowych możemy ustawić docelowe pochodzenie na '*'. Oznacza to, że każde okno nadrzędne otrzyma wiadomość.
Ogółem, kod child.html powinien wyglądać następująco:
parent.html
Wczytajmy parent.html w przeglądarce i otwórzmy konsolę (naciśnij CTRL+Shift+ J w Google Chrome).
Kiedy zmienimy rozmiar okna, powinniśmy teraz zobaczyć wartości pojawiające się w konsoli. Ostatnim krokiem jest użycie ich do ustawienia wysokości ramki iframe za każdym razem, gdy jedna z tych wartości zostanie wysłana.
Musimy nasłuchiwać zdarzeń wiadomości i za każdym razem, gdy otrzymamy jedną z nich, powinniśmy użyć jej do ustawienia właściwości height ramki iframe (plus trochę paddingu):
W sumie, twój plik parent.html powinien wyglądać tak:
Jeśli wykonałeś kroki poprawnie, twoja ramka iframe będzie teraz zmieniać rozmiar automatycznie, tak jakby jej zawartość była częścią okna nadrzędnego!