0Pricing
HTML Academy · Lekcja

Element iframe — src i sandbox

Osadzanie stron zewnętrznych i ograniczanie ich możliwości

Element iframe — src i sandbox to bezpłatna lekcja HTML Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej HTML Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs HTML Academy zawiera 4 lekcji w sumie.

Czym jest iframe?

Element <iframe> osadza inny dokument HTML na bieżącej stronie. Każdy iframe ma własny kontekst przeglądania, DOM i zakres JavaScriptu. Zawartość iframe nie może uzyskać dostępu do DOM strony nadrzędnej bez wyraźnego zezwolenia.

Podstawowe użycie iframe

Ustaw atrybut src na adres URL, który ma zostać osadzony: <iframe src="https://example.com" width="800" height="600">. iframe tworzy nowy kontekst przeglądania. Atrybut title jest wymagany ze względów dostępności: title="Embedded map".

Atrybut sandbox

sandbox nakłada ograniczenia na zawartość iframe: domyślnie wyłącza skrypty, formularze, wyskakujące okna i wtyczki. Aby przywrócić określone możliwości, dodaj odpowiednie uprawnienia: sandbox="allow-scripts allow-same-origin".

Uprawnienia sandbox

allow-scripts włącza JavaScript. allow-same-origin pozwala traktować iframe jako pochodzący z tego samego źródła (jest wymagane do uzyskania dostępu do localStorage). allow-forms umożliwia wysyłanie formularzy. allow-popups zezwala na window.open(). Należy przyznawać wyłącznie niezbędne minimum uprawnień.

Iframe między źródłami

Iframe między różnymi źródłami nie może uzyskać dostępu do DOM strony nadrzędnej — parent.document powoduje błąd bezpieczeństwa. Komunikacja między ramkami z różnych źródeł odbywa się za pomocą postMessage: iframe.contentWindow.postMessage(data, origin).

Komunikacja za pomocą postMessage

Aby wysłać wiadomość ze strony nadrzędnej do iframe, użyj: iframe.contentWindow.postMessage({ type: "update", data: {} }, "https://embed.example.com"). W iframe nasłuchuj wiadomości: window.addEventListener("message", handler). Przed przetworzeniem wiadomości zawsze sprawdzaj event.origin.

Leniwe ładowanie iframe

loading="lazy" na elementach iframe opóźnia ich ładowanie do momentu, gdy iframe znajdzie się blisko obszaru widoku, skracając początkowe ładowanie strony. Jest to przydatne w przypadku map, osadzonych filmów i widżetów mediów społecznościowych znajdujących się poniżej widocznej części strony i niewymagających natychmiastowego wyświetlenia.

Wydajność iframe

Każdy iframe ładuje osobny dokument HTML, arkusze CSS, kod JavaScript i zasoby — to znaczący koszt zasobów. Proszę unikać iframe w przypadku treści, które można osadzić jako fragment kodu. Proszę stosować lazy loading iframe znajdujących się poniżej załamania strony. Warto rozważyć wzorce fasady (wyświetlenie elementu zastępczego i załadowanie treści po kliknięciu).

Kontrola przewijania

Proszę kontrolować sposób przewijania iframe: scrolling="no" wyłącza paski przewijania (jest przestarzałe; zamiast tego proszę użyć CSS overflow: hidden na iframe). Nowoczesne podejście polega na ustawieniu wysokości iframe zgodnej z wysokością jego zawartości, dzięki czemu wewnętrzne paski przewijania nie są potrzebne.

Atrybut allow

Atrybut allow przyznaje iframe funkcje Permissions Policy: allow="camera; microphone; fullscreen". Umożliwia to iframe żądanie dostępu do kamery, mikrofonu i Fullscreen API, nawet jeśli origin nadrzędny nie korzysta z tych funkcji.

Osadzanie YouTube i Map

YouTube i Google Maps udostępniają kody osadzania iframe. Zawierają one atrybuty allow dla trybu pełnoekranowego i automatycznego odtwarzania. Zawsze proszę dodać title="Video title", aby zapewnić dostępność dla użytkowników czytników ekranu. Atrybut sandbox zwykle nie jest dodawany do kodów osadzania treści zewnętrznych — wskazówek dotyczących bezpieczeństwa należy szukać w ich dokumentacji.

Sprawdzenie wiedzy

Co domyślnie robi atrybut sandbox z iframe, gdy nie określono żadnych wartości?

Podsumowanie

iframe osadzają zewnętrzne dokumenty w izolowanych kontekstach przeglądania. Atrybut sandbox ogranicza możliwości iframe — proszę przyznawać wyłącznie minimalny zakres wymaganych uprawnień. postMessage umożliwia bezpieczną komunikację między różnymi originami. lazy loading odracza koszt ładowania iframe znajdujących się poniżej załamania strony. Atrybut allow przyznaje funkcje Permissions Policy zaufanym osadzanym treściom zewnętrznym.

Często zadawane pytania

Czy lekcja „Element iframe — src i sandbox” jest bezpłatna?

Tak — pełny tekst „Element iframe — src i sandbox” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu HTML Academy, przejdź na CoddyKit PRO. Kurs HTML Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Element iframe — src i sandbox”?

Osadzanie stron zewnętrznych i ograniczanie ich możliwości Ćwiczysz HTML Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć HTML Academy?

Nie wymagamy żadnego doświadczenia. HTML Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Element iframe — src i sandbox”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji HTML Academy?

Tak. Każda lekcja HTML Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Element iframe — src i sandbox
  2. Bezpieczeństwo iframe — clickjacking i X-Frame-Options
  3. Elementy embed i object
  4. Leniwe ładowanie iframe
← Powrót do HTML Academy