Pokud používáte na svých stránkách rámy (frames), asi občas potřebujete změnit obsah 2 či více rámu naráz. Jelikož pomocí HTML to není možné, tak si v dnešním článku ukážeme, jak na to pomocí JavaScriptu.

Jednotlivé rámy jsou uloženy v kolekci frames. Pro nejvýše položený rám se používá označení top. Pro okno obsahující definici framesetu, tj. stránku obsahující HTML kód pro vytvoření rámu, používáme označení parent. Pokud je na stránce pouze jedna definici rámu jsou si top a parent rovné.

Na jednotlivé rámy se můžeme odkazovat buď pomocí jména rámu, číselným nebo jmenným indexem. Jméno rámu je určeno v definici framesetu pomocí atributu name. Pro následující příklad použijeme jména rámů horni, levy, hlavni.

<frameset rows=“30,*“>
<frame name=“horni“ scrolling=“no“ noresize src=“levy.htm“>
<frameset cols=“150,*“>
<frame name=“levy“ target=“hlavni“ src=“pravy.htm“ scrolling=“auto“>
<frame name=“hlavni“ src=“hlavni.htm“ scrolling=“auto“>
</frameset>
</frameset> 

Nyní si přestavte, že chcete třeba změnit pomocí odkazu umístěném v rámu horni obsah rámů levy a hlavni. Odkaz pro náš příklad bude vypadat takto.

<a href=“javascript:Multilink(‚levy‘,’1.htm‘,’hlavni‘,’2.htm‘)“>2Link</a> 

Odkaz předá funkci Multilink parametry 

  •  jméno rámu
  •  URL stránky, která se má v daném rámu zobrazit.
<script lanuage=“javascript“>
function Multilink(){
  for (var i=0; i<Multilink.arguments.length; i+=2) {
    parent.frames[Multilink.arguments[i]].location=Multilink.arguments[i+1];
  }
}
</script> 

Argumenty předané do funkce jsou uloženy v poli arguments. Funkce Multilink použije každý argument s indexem i jako jméno rámu a každý s indexem i+1 jako URL. Pak navýší hodnotu i o 2 a pokračuje dokud nevyčerpá všechny argumenty. Funkce neobsahuje kontrolu proti chybně zadanému počtu argumentů.

Script je odskoušen v Internet Exploreru 5.5 a v Netscape ve verzích 4.74 a 6, ale měl by fungovat ve všech prohlížečích podporujících JavaScript a rámy.

A to je pro dnešek vše, přátelé.

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