Table of contents

  1. Dlaczego ramki są złym pomysłem
    1. Ramki nie pasują do hypertekstu
    2. Ramki stanowią barierę
    3. Ramki tylko pozornie upraszczają
    4. Ramki są niedopracowanym standardem
    5. Kiedy ramki są potrzebne
  2. Alternatywy dla ramek
    1. Jak uniknąć przeładowywania całej strony?
    2. Czym łączyć treść i pozostałe elementy strony
      1. Na serwerze
      2. Bez pomocy serwera (czyt: nie musisz mieć wsparcia dla PHP na serwerze)
    3. Wygląd ramek bez ramek
    4. Mity anty-ramkowe

Ramki (<iframe> to też ramka!) są jednym z wielu wynalazków powstałych podczas wojny przeglądarek. W tych okrutnych czasach strony robiło się zazwyczaj w “gołym HTML”, bez pomocy technologii po stronie serwera. Autorzy stron, nie zdając sobie sprawy z istnienia preprocesorów HTML, zmagali się z aktualizowaniem wspólnych elementów stron (menu) na wszystkich podstronach serwisu. Jak zwykle szybkie, proste i zupełnie nieprzemyślane rozwiązanie dostarczył Netscape.

Uwaga: pisząc nie można/nie da się mam na myśli przeciętnego prostego użytkownika i webmastera bez dziesiątek zamotanych skryptów.

Uwaga2: kiedy poczujesz, że masz dość — zerknij na koniec tekstu po sposoby zastąpienia ramek czym innym.

Ramki nie pasują do hypertekstu

Zaskakująco dużo punktów tyczy się też stron całkowicie polegających na AJAX. Te oznaczyłem przez (a).

Strona na ramkach to tak na prawdę dwa lub więcej dokumentów. Większość najgorszych bolączek ramek wywodzi się z tego, że URL zawsze wskazuje tylko jeden dokument. Przez to:

Ramki stanowią barierę

Ramki tylko pozornie upraszczają

Ramki są niedopracowanym standardem

Kiedy ramki są potrzebne

Na zwykłych stronach WWW nie są. Niewidoczne ramki mogą być przydatnym hackiem przy robieniu webowych aplikacji dla starszych przeglądarek bez obsługi XMLHTTPRequest. Mogą też znaleźć zastosowanie w aplikacjach intranetowych, gdzie nie jest ważna szeroka dostępność i kompatybilność.

Alternatywy dla ramek

Wcześniej wymienione problemy dyskwalifikują typowe zastosowanie ramek na Sieci. Na szczęście nie są one niezastąpione.

Jak uniknąć przeładowywania całej strony?

Tak na prawdę — nie unikać. Większość stron w Internecie się przeładowuje i użytkownicy są do tego przyzwyczajeni. Ponadto coraz popularniejsze przeglądarki nowsze od IE mają progresywne i buforowane wyświetlanie, dzięki czemu zwykłe strony wyświetlają się rownie szybko i elegancko, jak strony na ramkach.

O ile wady ramek są nieusuwalne, to ładowanie stron za pomocą AJAX da się zrobić wystarczająco użyteczne i kompatybilne wstecz (poprzez doklejanie adresu rzeczywistej podstrony w location.hash, obserwowanie zmian adresu i emulowanie przycisku wstecz oraz odpowiednio zrobione linki, ale to wszystko razem to dość skomplikowana sprawa).

Czym łączyć treść i pozostałe elementy strony

Na serwerze

Bez pomocy serwera (czyt: nie musisz mieć wsparcia dla PHP na serwerze)

Wygląd ramek bez ramek

Jeśli potrzebny jest wygląd podobny do ramek, szczególnie iframe, można użyć CSS:

Mity anty-ramkowe

Doklejone menu do strony jest na tyle małe, że nie spowoduje zauważalnego spowolnienia (jeśli jest inaczej — przemyśl użycie CSS).
“Mrugnięcie” całej strony nie jest niczym wyjątkowym, w przeciwieństwie do ww. problemów. Jak wspomniano wcześniej w nowych przeglądarkach i tak najczęściej nie występuje.