Front-end

Jak używać tagu <Iframe> w HTML?

Jeśli chcesz umieścić na swojej stronie internetowej treść z innej strony, np. film z YouTube lub mapę Google, możesz skorzystać z tagu <Iframe> w HTML. Dzięki niemu możesz osadzać w swojej witrynie treści z innych źródeł bez potrzeby ich kopiowania. W tym artykule dowiesz się, jak używać tagu <Iframe> i jakie są jego możliwości.

05 cze 2023

Tag <Iframe> to jeden z bardziej zaawansowanych elementów HTML, który pozwala na osadzanie wewnątrz strony internetowej innej witryny lub materiału multimedialnego z zewnętrznych źródeł. Dzięki niemu możemy umieścić na naszej stronie np. interaktywną mapę, wideo z serwisu YouTube czy kalkulator finansowy z innej witryny. Wymaga jednak uważnego stosowania ze względu na potencjalne zagrożenia związane z bezpieczeństwem oraz konfliktami związanymi z interaktywnością między stronami.

 

Użycie tagu Iframe w HTML

Tag <Iframe> jest jednym z najważniejszych narzędzi w HTML, pozwalającym na wbudowanie jednej strony internetowej w kolejną. Aby użyć tagu <Iframe>, należy najpierw określić adres docelowej strony, który zostanie załadowany wewnątrz ramki <Iframe>. Można to zrobić poprzez atrybut 'src', który przybiera wartość URL strony docelowej. Co ważne, tag <Iframe> wspiera również wiele innych atrybutów, takich jak 'width', 'height', 'frameborder', czy 'allowfullscreen', co umożliwia jeszcze bardziej szczegółową kontrolę nad wyglądem i działaniem ramki <Iframe>.

 

Obsługa błędów i ograniczeń iframe

  • Polityka CORS może uniemożliwić załadowanie zawartości z innych domen.
  • Należy sprawdzać nagłówki Content-Security-Policy (frame-ancestors) oraz unikać korzystania ze stron bez tych zabezpieczeń.
  • Obsługa zdarzenia load może być pomocna, ale z powodu zabezpieczeń nie pozwala odczytywać zawartości z innej domeny.

ekrany, tag Iframe

Przykłady zastosowania tagu iframe w praktyce

  • Osadzanie map: Tag <iframe> jest często wykorzystywany do osadzania map interaktywnych, takich jak Google Maps czy Mapbox, na stronach internetowych. Można umieścić kod <iframe> dostarczony przez dostawcę map, podając szerokość, wysokość i inne parametry. Dzięki temu użytkownicy mogą przeglądać mapy, powiększać i oddalać widok oraz korzystać z innych funkcji oferowanych przez dostawcę map.
  • Wbudowywanie multimediów: Tag <iframe> umożliwia również wbudowywanie multimediów na stronie internetowej. Na przykład, można użyć <iframe> do osadzenia filmów z platform takich jak YouTube czy Vimeo. Wystarczy podać odpowiedni adres URL filmu w atrybucie "src" <iframe> i ustawić wymagane rozmiary, aby wyświetlić film na stronie.
  • Integracja z zewnętrznymi aplikacjami: Tag <iframe> jest wykorzystywany do integracji z zewnętrznymi aplikacjami lub usługami, takimi jak kalendarze, formularze do zbierania danych czy narzędzia do zarządzania projektami. Można osadzić formularz rejestracyjny dostarczony przez usługodawcę lub pokazać harmonogram wydarzeń z zewnętrznego kalendarza.
  • Wyświetlanie dokumentów PDF: <iframe> może być również używany do wyświetlania dokumentów PDF bezpośrednio na stronie internetowej. Dzięki temu użytkownicy mogą przeglądać dokumenty bez konieczności ich pobierania czy otwierania w oddzielnym oknie.
  • Dynamiczne ładowanie treści: Tag <iframe> można wykorzystać do dynamicznego ładowania treści z innych stron internetowych. Na przykład, można osadzić sekcję wiadomości lub bloga z innej strony, aby wyświetlać aktualne treści na stronie głównej.

 

Dostosowywanie wyglądu iframe za pomocą CSS

Tag <iframe> domyślnie wyświetla zawartość zewnętrznych stron w prostokątnej ramce, ale jego wygląd można łatwo dostosować przy użyciu CSS, aby lepiej integrował się z projektem strony internetowej. Podstawowe atrybuty, takie jak width (szerokość) i height (wysokość), mogą być nadpisane przez style CSS, co daje większą elastyczność w definiowaniu rozmiarów ramki. Na przykład, używając CSS, można ustawić width: 100%; oraz height: auto;, aby <iframe> automatycznie dostosowywał się do szerokości kontenera i zachowywał proporcje treści, co jest szczególnie ważne w przypadku responsywnych projektów. 

Dodatkowo, do stylizacji <iframe> można użyć takich właściwości CSS jak border, aby zmienić wygląd ramki, np. border: none; usunie standardową obramowanie, co jest często stosowane, gdy chcemy, aby <iframe> wyglądał jak część osadzanej strony, a nie jak oddzielny element. W celu dodania efektów wizualnych można zastosować box-shadow, który doda cień do ramki i sprawi, że będzie bardziej wyróżniać się na tle strony. Możliwe jest również użycie border-radius do zaokrąglenia narożników <iframe>, co może dodać nowoczesnego wyglądu. 

Kolejnym aspektem jest umiejscowienie <iframe> na stronie. Dzięki właściwościom takim jak position, margin, czy padding, można precyzyjnie kontrolować położenie ramki w stosunku do innych elementów na stronie. Na przykład, użycie margin: 0 auto; pozwala na wycentrowanie <iframe> w jego kontenerze. Stylizacja <iframe> za pomocą CSS umożliwia również tworzenie efektów animacji lub interakcji, takich jak zmiany wyglądu ramki na hover, co może dodać dynamiczności stronie. Dostosowywanie wyglądu <iframe> za pomocą CSS pozwala na lepszą integrację osadzonej zawartości z ogólnym designem strony, poprawiając spójność wizualną i estetykę projektu.

 

Atrybuty rozszerzające możliwości iframe

Tag <iframe> oferuje szereg atrybutów, które znacząco rozszerzają jego funkcjonalność i pozwalają lepiej kontrolować osadzoną zawartość oraz jej interakcje z resztą strony. Jednym z takich atrybutów jest name, który nadaje ramce unikalną nazwę, umożliwiając odwoływanie się do niej z poziomu linków lub skryptów JavaScript. Na przykład, można otworzyć stronę w określonym <iframe>, ustawiając target linku na nazwę tej ramki. Atrybut srcdoc pozwala na osadzanie bezpośrednio kodu HTML w <iframe>, co jest przydatne, gdy chcemy szybko wstawić prostą zawartość bez konieczności odwoływania się do zewnętrznego pliku. 

Atrybut sandbox dodaje dodatkową warstwę bezpieczeństwa, ograniczając możliwość wykonywania skryptów, otwierania nowych okien lub dostępu do zewnętrznych zasobów, chyba że zostaną one jawnie dozwolone przez określone wartości atrybutu, takie jak allow-scripts czy allow-same-origin. Innym ważnym atrybutem jest allow, który kontroluje specyficzne uprawnienia dla osadzonej treści, takie jak dostęp do geolokalizacji (allow="geolocation") czy możliwość używania kamery i mikrofonu (allow="camera; microphone"). 

Dodatkowo, atrybut referrerpolicy pozwala kontrolować, jakie informacje o odwołującym się źródle są przekazywane do strony osadzonej w <iframe>. Może to być użyteczne w przypadku, gdy chcemy ograniczyć informacje przekazywane do zewnętrznych serwisów. Użycie odpowiednich atrybutów <iframe> umożliwia nie tylko osadzanie treści, ale także precyzyjną kontrolę nad jej zachowaniem, bezpieczeństwem oraz integracją z resztą strony internetowej, co czyni ten tag niezwykle wszechstronnym narzędziem w tworzeniu nowoczesnych aplikacji webowych.

Atrybuty rozszerzające możliwości iframe

Alternatywy dla iframe

  • Google Maps API – zamiast iframe, lepsza kontrola i integracja.
  • Komponenty SPA (React, Vue, Angular) – dynamiczne osadzanie treści jako komponenty.
  • Element <object> i <embed> – dla PDF, wideo, itp.
  • Serwisy integrujące dane przez API – np. dane z YouTube, Vimeo, Google Calendar.

 

Bezpieczeństwo i zasady dotyczące używania tagu iframe

  • Używaj tylko zaufanych źródeł.
  • Włącz sandbox, jeżeli nie potrzebujesz pełnej funkcjonalności.
  • Stosuj Content-Security-Policy: frame-ancestors zamiast przestarzałego X-Frame-Options.
  • Unikaj iframe do wrażliwych danych (np. logowania).
  • Zabezpiecz komunikację przez postMessage (z weryfikacją originu).

 

Podsumowanie

Wnioskując, tag <Iframe> pozwala na łatwe i intuicyjne osadzanie innych stron internetowych na naszej własnej stronie. Za pomocą kilku atrybutów możemy dostosować wygląd i zachowanie osadzonej strony. Warto jednak pamiętać o bezpieczeństwie i korzystać tylko z zaufanych źródeł, aby nie narazić naszych użytkowników na ryzyko ataków.

 

FAQ

FAQ – najczęstsze pytania o tag iframe

  • Tag `

  • Aby użyć tagu ``. Umożliwia szczegółową kontrolę nad wyglądem i działaniem ramki.

  • Najważniejsze atrybuty: `name` (unikalna nazwa ramki do odwoływania się z linków/skryptów), `srcdoc` (osadzanie kodu HTML bezpośrednio), `sandbox` (warstwa bezpieczeństwa ograniczająca skrypty i okna), `allow` (uprawnienia dla osadzonej treści, np. geolocation, camera, microphone), `referrerpolicy` (kontrola informacji o odwołującym się źródle przekazywanych do osadzonej strony).

  • Pięć typowych zastosowań. Osadzanie map (Google Maps, Mapbox). Wbudowywanie multimediów – filmy z YouTube, Vimeo. Integracja z zewnętrznymi aplikacjami – kalendarze, formularze, narzędzia do zarządzania projektami. Wyświetlanie dokumentów PDF bezpośrednio na stronie bez pobierania. Dynamiczne ładowanie treści z innych stron – np. sekcja wiadomości lub bloga.

  • Tag iframe niesie pewne ryzyka. Polityka CORS może uniemożliwić załadowanie zawartości z innych domen. Należy używać tylko zaufanych źródeł, włączyć atrybut `sandbox` ograniczający skrypty, stosować `Content-Security-Policy: frame-ancestors` zamiast przestarzałego X-Frame-Options. Należy unikać iframe do wrażliwych danych (np. logowania), a komunikację przez `postMessage` zabezpieczać weryfikacją originu.

  • Cztery główne alternatywy. Google Maps API – zamiast iframe daje lepszą kontrolę i integrację. Komponenty SPA (React, Vue, Angular) – dynamiczne osadzanie treści jako komponenty. Elementy `` i `` – dla PDF i wideo. Serwisy integrujące dane przez API – np. dane z YouTube, Vimeo, Google Calendar. Te rozwiązania często oferują lepszą wydajność i bezpieczeństwo niż iframe.

Blog

Powiązane artykuły

Czytaj więcej
Front-end

Wprowadzenie do Varnisha: czym jest i jak działa?

Varnish to narzędzie służące do buforowania i cache'owania treści witryny internetowej, co pozwala na zwiększenie wydajności, niezawodności i bezpieczeństwa witryny. Varnish działa jako warstwa pomiędzy serwerem a użytkownikiem, przechowując w swoim cache'u kopie treści, takich jak strony internetowe, obrazy i inne elementy.

Tomasz Kozon
01 lis 2022
Front-end

Znacznik HTML bold: Klucz do pogrubaiania tekstu

HTML to nie tylko podstawa każdej strony internetowej, ale także narzędzie umożliwiające manipulację wyglądem tekstu. Jednym z podstawowych znaczników jest 'bold', które umożliwia pogrubaianie tekstu. Rozważmy, jak klucz do pogrubaiania tekstu może wpłynąć na czytelność i estetykę naszej strony.

Tomasz Kozon
06 paź 2023
Front-end

FlutterFlow: Rewolucja w tworzeniu aplikacji mobilnych

FlutterFlow, nowe narzędzie do tworzenia aplikacji na systemy iOS i Android, zrewolucjonizowało sposób tworzenia aplikacji mobilnych. Ten system zapewnia szybki i efektywny proces tworzenia aplikacji, które są zarówno atrakcyjne, jak i funkcjonalne. Jego wykorzystanie może zmienić sposób, w jaki myślimy o programowaniu.

Tomasz Kozon
29 maj 2024
Front-end

AJAX - co to jest AJAX i jak działa?

AJAX, czyli Asynchronous JavaScript and XML. Jest to technologia, która umożliwia przetwarzanie danych na stronie internetowej bez konieczności przeładowania całej strony. AJAX umożliwia szybsze ładowanie stron internetowych, interaktywność interfejsu użytkownika i efektywniejsze przetwarzanie danych.

Tomasz Kozon
20 sty 2023