Džavascript - online verze
obsah1. díl2. díl 3. díl4. díl5. díl6. díl7. díl8. díl

V.
Identifikácia prehliadača

    Skriptový jazyk JavaScript už existuje niekoľko rokov. Prvým prehliadačom stránok, ktorý ho začal podporovať, bol Netscape Navigator. Od svojej verzie 2.0 sa tento prehliadač neustále vyvíjal a s ním sa začal zdokonaľovať i samotný JavaScript.
     Za krátky čas sa na internetovom nebi objavil nový prehliadač webovských stránok - Microsoft Internet Explorer. Na to, aby si získal svojich priaznivcov mu nestačilo ponúkať len nové možnosti, ale musel dokázať zobrazovať stránky aspoň tak dobre ako jeho konkurent. S tým súvisela i jeho nutnosť podporovať už vtedy zabehnutý jazyk JavaScript. Microsoft teda zabudoval jeho podporu do svojej novej verzie prehliadača.
     Vznikol Internet Explorer 3.0, ktorého verzia JavaScriptu sa však v mnohých veciach líšila od JavaScriptu, ktorý bol implementovaný v Netscape Navigatore. Všetci tvorcovia stránok zaznamenali prvé problémy, pretože väčšina ich zložitejších skriptov nechcela fungovať alebo fungovala v Internet Exploreri odlišne.

Identifikácia prehliadača stránok

     V minulej časti seriálu sme sa zaoberali zámenou obrázkov. Tento prvok začal Netscape Navigator podporovať už od svojej verzie 3.0, no Internet Explorer až od verzie 4.0. Vznikol takto problém, pretože ak si niekto našu stránku prezeral pod IE 3.0, tak mu naskakovali chybové hlásenia.
     Na identifikáciu používaného prehliadača stránok slúži v JavaScripte niekoľko vnútorných premenných. Pomocou nich dokážeme naše skripty ošetriť tak, aby sa správali odlišne v prípade, že si niekto našu stránku prezerá pod inou verziou prípadne iným prehliadačom.
     Nasledujúci skript po spustení vypíše základné informácie o prehliadači, ktorý práve používame.

PRÍKLAD 5.1 - Identifikácia prehliadača (1)

<html>
<head>
<title>Identifikacia prehliadaca (1)</title>
<script>
<!--
function wrt(bold,normal)
{
  document.write("<b>"+bold+": </b>"+normal+"<br>");
}
// -->
</script>
</head>
<body>
<script>
<!--
wrt("Browser Name",navigator.appName);
wrt("Version",navigator.appVersion);
wrt("Code Name",navigator.appCodeName);
wrt("User Agent",navigator.userAgent);
// -->
</script>
</body>
</html>

V tomto skripte sa máme možnosť stretnúť s týmito vnútornými premennými:

navigator.appName - názov prehliadača stránok
navigator.appVersion - verzia
navigator.appCodeName - kódové označenie
navigator.UserAgent - kódové označenie / verzia

V skutočnosti je ich viac, no keďže nie sú rovnako podporované ako v Netscape tak i v Exploreri, tak ich neuvádzame.

Identifikácia prehliadača (2)

     Predchádzajúci skript bol veľmi jednoúčelový, pretože jeho úlohou bolo iba vypisovať údaje o používanom prehliadači stránok. Teraz, keď sme sa už s nimi oboznámili, využijeme naše znalosti z minulých častí seriálu a naprogramujeme si skript, ktorý bude na základe získaných informácií o používanom prehliadači, vykonávať určitý odlišný sled príkazov. Tým dokážeme zabezpečiť to, že keď si niekto prezrie našu stránku so staršou verziou resp. iným prehliadačom, tak sa mu neobjavia chybové hlásenia prípadne sa vykoná časť skriptu určená pre tento prehliadač.

PRÍKLAD 5.2 - Identifikácia prehliadača (2)

<html>
<head>
<title>Identifikacia prehliadaca (2)</title>
</head>
<body>
<script>
<!--
nazov = navigator.appName;
verzia = parseInt(navigator.appVersion);
netscape = (nazov == "Netscape" && verzia >= 4);
explorer = (nazov == "Microsoft Internet Explorer" && verzia >= 4);
if (netscape)
{
  document.write("Vykonavam skript... (cast urcena pre Netscape 4)<br>");
}
if (explorer)
{
  document.write("Vykonavam skript... (cast urcena pre Explorer 4)<br>");
}
if (netscape || explorer)
{
  document.write("Vykonavam skript... (cast urcena pre 4kove verzie)");
}
// -->
</script>
</body>
</html>

     Ako to celé funguje? Na začiatku sa do premenných nazov a verzia uložia údaje z vnútorných premenných prehliadača. Pri premennej verzia si môžete všimnúť novú funkciu, a to parseInt. Úlohou tejto funkcie je z textového reťazca vyňať celé číslo. Do premennej netscape sa uloží logická hodnota true alebo false podľa toho, či dôjde alebo nedôjde k splneniu podmienky uvedenej vo vnútri jej zátvoriek (tzn. overujeme, či sa používa prehliadač Netscape a súčasne, či jeho verzia je >=4). To iste platí aj pre premennú explorer. Následne príkaz podmienky if zisťuje, či premenná netscape nadobudla hodnotu true a ak áno, tak vykoná príkaz vo vnútri svojich zložených zátvoriek. Takým istým spôsobom overujeme logickú hodnotu premennej explorer... V poslednej časti sa vykoná časť skriptu spoločná pre obidva prehliadače verzie 4.0 alebo vyšsej.

Presmerovanie na optimalizovanú stránku

     Ako posledný príklad si uvedieme skript, ktorý je vhodné si umiestniť na titulnú stránku. Po nahratí stránky do pamäte, sa tento skript spustí a v závislosti od použitého prehliadača presmeruje návštevníka na ďalšiu stránku. Ak návštevník používa Netscape 4 nahrá sa mu stránka net4.html, ak používa Explorer 4 nahrá sa mu exp4.html. Ak používa nižšiu verziu týchto prehliadačov prípadne iný prehliadač podporujúci JavaScript, nahrá sa mu stránka other.html. Tento skript možno použiť všade tam, kde sa hojne využívajú najrozličnejšie JavaScripty a kde je potrebné mať viac verzií stránok.

PRÍKLAD 5.3 - Presmerovanie na optimalizovanú stránku

<html>
<head>
<meta http-equiv="refresh" content="0; URL=other.html">
<title>Presmerovanie na optimalizovanu stranku</title>
<script language="JavaScript">
<!--
netscape = (document.layers) ? 1 : 0;
explorer = (document.all) ? 1 : 0;
if (explorer) location="exp4.html";
if (netscape) location="net4.html";
if (!explorer && !netscape) location="other.html";
// -->
</script>
</head>
<body>
</body>
</html>

      V tomto príklade sme na rozdiel od tých predošlých využili elegantné riešenie zisťovania prítomnosti prehliadačov, a to pomocou objektov. Počnúc verziou 4.0 začali obidva prehliadače podporovať vrstvy. Ak chceme pristupovať k vrstvám v Netscape, využívame pri tom objekt document.layers. Ak tento objekt neexistuje, do premennej netscape sa uloží hodnota 0 (false). Ak chceme pristupovať k vrstvám v Exploreri, využívame pri tom objekt document.all. Ak tento objekt neexistuje, do premennej explorer sa uloží hodnota 0 (false). Nakoniec sa zisťujú logické hodnoty premenných a v závislosti od toho dochádza k presmerovaniu na dané stránky. Ak nastane prípad, že si niekto stránku prezerá prehliadačom stránok podporujúcim JavaScript, avšak nie je to ani Netscape ani Explorer, dôjde k splneniu poslednej podmienky a dôjde k presmerovaniu na stránku other.html. Ak sa na stránku pozeráme prehliadačom nepodporujúcim JavaScript, dôjde tiež k presmerovaniu na stránku other.html, a to vďaka META príkazu refresh.

Záverom...

     Rozličná podpora JavaScriptu dokáže ísť niekedy poriadne na nervy, pretože pridáva veľa roboty všetkým tvorcom stránok, ktorí využívajú tento skriptový jazyk. Je preto niekedy ťažké naprogramovať taký skript, ktorý by 100%ne fungoval pod obidvoma prehliadačmi webovských stránok: Netscape Navigatorom a Internet Explorerom.

     Veľa úspechov s JavaScriptom vám želá,

Rastislav Škultéty
webmaster@javascript.sk

Upozornenie:

Ak používate Netscape Navigator a často si prezeráte zdrojový text HTML dokumentov, ktoré obsahujú JavaScript, majte sa na pozore. Voľba Page Source zobrazuje síce zdrojový text, no časti, kde sa nachádza document.write sú už skompilované a vidieť je iba ich výsledok. Ak si chcete prezrieť skutočný zdrojový text, napíšte pred adresu stránky view-source: (napr. view-source: www.javascript.sk).



NAHORU
grafické zpracování (C) 1999 Jakub Holý, časopis Internet, Trade & Leisure Publications Praha
obsah, online zpracování (C) 1998 - 1999 Rastislav Škultéty