Ani by mne moc nepřekvapilo, jestli vám teď rámy připadají jako docela šikovná věc. Zvláště když chcete ke stránkám jednoduše přidat navigační panel s odkazy na jednotlivé stránky. Před pár lety proto bylo používání rámů poměrně moderní. Použití rámů však přináší několik problémů, které jsou většinou závažnější než výhody.
Prvním problémem je delší doba načítání stránky. Pokud se stránka skládá ze tří rámů (asi nejčastější případ), musí se na klienta přenést postupně čtyři objekty – nejprve stránka s definicí rozložení rámů a pak stránky pro jednotlivé rámy. Doba než se zobrazí celá stránka je tak zvláště na pomalejších linkách mnohem delší než u klasické stránky.
Mnohem větší problém je však nemožnost vytvoření odkazu nebo
záložky na rámovou stránku. Odkaz v HTML vždy ukazuje pomocí URL
na jednu stránku. V případě rámů se jedná o stránku, která
pomocí elementu frameset
definuje rozložení rámů na
stránce. V definici rámů je však pevně dáno, které stránky se
mají do jednotlivých rámů načíst. Odkaz nebo záložka proto vždy
ukazuje na počáteční rozložení rámů. Nelze vytvořit odkaz na
rozložení, kde by v některém z rámů byla stránka, na kterou
jsme se postupně „proklikali“.
Když stránky s rámy vytváříme sami a chceme na ně vytvářet
odkazy, jsou dvě možnosti, jak to obejít. Jednak můžeme pro každou
možnou kombinaci stránek vytvořit vlastní stránku s definicí rozložení
rámů. U všech odkazů pak použijeme
target="_top"
. Tento přístup má však dvě velké
nevýhody – přenáší se mnohem více dat a musíme vytvářet mnoho
stránek s rozložením rámů (to lze obejít skriptem na straně
serveru).
Druhý přístup k řešení počítá s tím, že do každé stránky vložíme javascriptový kód, který se postará o vytvoření stránky se správným rozložením rámů.
Sečteno a podtrženo – rámům se radši vyhněte.