JavaScript – objekt history

29. března 2000

Vážení čtenáři, v dnešním díle se budeme zabývat trochu jednodušším tématem proti minulému dílu a to objektem history. Každopádně doufám, že téma tohoto dílu bude pro vaše stránky velice užitečné.

Prakticky každý, kdo používá prohlížeč, využívá tlačítka Zpět a Vpřed, které slouží pro přesun mezi dříve zobrazenými stránkami v okně prohlížeče. Na obrázku jsou tato tlačítka zobrazena, jak vypadají v Internet Exploreru:

Stejnou činnost, jako můžete provádět pomocí těchto tlačítek, můžete provést i pomocí JavaScriptu. Vše řídí objekt, který se jmenuje history. Jako nejjednodušší příklad mohu předvést často používaný kód, který vás přesune na předchozí stránku, která byla v okně zobrazena:

<html>
<head>
<title>Návrat zpět</title>
</head>
<body>
<a href="javascript:self.history.back();">Návrat na předchozí stránkut</a>
</body>
</html>

A takto to dopadne:

Návrat na předchozí stránku

Pokud se podíváte na příkaz, který zařizuje návrat na předchozí stránku, zjistíte že jde o příkaz self.history.back(). V tomto příkazu začínáme instancí objektu self, které představuje okno prohlížeče. Každý objekt history se totiž váže k nějakému oknu. Protože nás v tomto okně zajímá objekt history, napsali jsme self.history. Objekt history umí vykonat příkaz back(), který nás posune na předchozí zobrazenou stránku.

Příkaz back() vás přesune na předchozí stránku jenom tehdy, pokud už ve stejném okně prohlížeče prohlížíte alespoň druhou stránku, jinak vás není kam přesunout. V případě, že vás není kam přesunout, potom příkaz back() prostě nic neudělá, ale také nehlásí žádnou chybu.

Objekt history umí také další příkazy, například se umí také posunout o jednu stránku dopředu. K tomu slouží příkaz forward(). Pokud se tedy budete chtít v okně prohlížeče posunout na následující stránku, použijte self.history.forward().

Další, co objekt history zvládá, je příkaz go(číslo), kdy do závorky musíte napsat nějaké číslo. Tento příkaz umožňuje posun o více stránek. Pokud je číslo kladné, přesouváte se dopředu. Pokud bude v závorce záporné číslo, posouváte se zpět. Například self.history.go(-1) vás posune o jednu stránku zpět, příkaz self.history.go(-2) o dvě stránky zpět. Naopak třeba self.history.go(4) vás přesune o čtyři stránky dopředu.

Také je možné zjistit, kolik stránek jste už v okně zobrazili, a to pomocí zápisu self.history.length. Zde je uveden příklad, který po klinutí na odkaz zobrazí okno s počtem zobrazených stránek:

<html>
<head>
<title>Návrat zpět</title>
</head>
<body>
<a href="javascript:void alert(self.history.length);">Klikni sem</a>
</body>
</html>

A zde si můžete příklad vyzkoušet:

Klikni sem

Bohužel příkaz length je trochu závislý na tom, ze kterého prohlížeče ho spustíte. Pokud ho spustíte z Netscape Navigatoru, ukáže vám počet stránek, které byly zobrazeny včetně právě zobrazené stránky. Internet Explorer zase právě zobrazenou stránku nepočítá, takže ukazuje o jedničku menší číslo.

Výše uvedené příkazy, tedy back(), forward() a go(číslo) a length jsou základní příkazy objektu history. Tyto příkazy by měl zvládnout naprosto každý prohlížeč, který umí JavaScript, a to za každých okolností.

U objektu history se hodně počítalo s bezpečností. Proto první verze JavaScriptu obsahovaly pouze tyto čtyři příkazy. Ty vás sice přenesou na jakoukoli stránku, která byla v okně dříve zobrazena, ale neumožňují vám zjistit, jaké stránky to byly. To mělo zabraňovat tomu, aby agenti tajných služeb a různé nekalé živly mohly pomocí podvržených stránek s JavaScriptem zjistit, co jste si prohlíželi za stránky.

V dalších verzích JavaScriptu byly přidány možnosti zjišťování, které stránky byly zobrazeny. Protože se však tyto informace považují za velice nebezpečné, většinou se správná funkce váže na povolení zobrazení těchto informací. Používání těchto možností je proto komplikovanější, a v tomto díle je nebudu rozebírat.

A to je pro tento díl vše.

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

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

Štítky: Články

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *