Pokud používáte rámy, vlastně dělíte plochu prohlížeče na více oken. Každé okno můžete samostatně ovládat pomocí JavaScriptu, stejně jako o těchto oknech získávat informace.

Každé okno se v JavaScriptu chová jako objekt typu window. Abychom se mohli od něčeho odrazit, nabízí nám JavaScript některé stálé názvy pro základní okna. Nejdůležitější název je self, který představuje právě to okno, ve kterém jsme, a ze kterého spouštíme náš JavaScript. Také se používá název window, který je to samé co self. V rámech je ještě důležitý název top, který znamená celou zobrazovací plochu prohlížeče, která uvnitř nese všechna okna rámu. Přes top se tedy můžeme dostat na jakékoli okno v rámu, čehož také využijeme.

Řekněme, že máme definované rámy pomocí následující HTML stránky:

<html>
<head>
<title>Definice rámů</title>
</head>
<frameset rows="70,*">
    <frame name="horni_lista" src="horni_lista.html">
    <frameset cols="20%,80%">
        <frame name="leva_cast" src=“leva_cast.html">
        <frame name="prava_cast" src=“prava_cast.html">
    </frameset">
</frameset>
<body>
</body>
</html>

V takové stránce máme tři okna, které budou zobrazeny takto (jména uvnitř rámů jsou námi zvolená jména oken):

horni_lista
leva_cast prava_cast

Každé okno, které si pojmenujeme (v našem případě pomocí atributu name uvnitř značky <frame>), můžeme pomocí tohoto jména ovládat. Třeba můžeme do okna s názvem prava_cast nahrát úvodní stránku Intervalu takto:

prava_cast.document.location.href=“http://www.interval.cz“;

Samozřejmě můžeme používat i jméno top, které má význam plochy, která zahrnuje všechna tři okna. Celou stránku i s rámy můžeme za pomoci jména top zavřít takto:

top.close();

JavaScript také umožňuje také jiný přístup k oknům, které jsou v rámu. Každý rám totiž obsahuje pole všech oken, která jsou mu podřízena. Například v našem případě obsahuje okno top tři podřízená okna. K těmto oknům se snadno dostaneme také pomocí pole oken, a to takto: První okno ovládáme pomocí zápisu top.frames[0], druhé okno pomocí zápisu top.frames[1] a konečně třetí okno pomocí zápisu top.frames[2]. Takto se dostaneme i k oknům, která jsme si nepojmenovali.

Pokud nahrajete následující HTML stránku do jednoho oken uvnitř rámů, stránka Vám zobrazí podrobné informace o všech oknech v rámu:

<html>
<head>
<title>Výpis oken v rámu</title>
</head>
<body>
<script type="text/javascript" language="JavaScript"><!–
function vypis_okna()
{
    var pocet_oken = top.length;
    if (pocet_oken <= 1)
    {
        alert("Nejsem uvnitř rámů");
        return;
    }
    var info_text = "";
    var i;
    for (i=0; i<pocet_oken; ++i)
        info_text += "top.frames["+i+"]:\n jméno = \’" + top.frames[i].name + "\’\n url = \’" + top.frames[i].document.location.href + "\’\n\n";
    alert(info_text);
};
// –>
</script>
<form>
<input type="button" value="Ukaž okna" onClick="vypis_okna()" >
</form>
</body>
</html>

Příklad je trochu složitější, ale dobře ukazuje možnosti pole oken při použití jména top. Všechny příklady jsou demonstrovány na této stránce.

A to je pro dnešek vše.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Žádný příspěvek v diskuzi

Odpovědět