K vytvoření tohoto článku mě přimělo využívání webové verze ICQ, které se neinstaluje a spustí se jako JAVA applet v prohlížeči. Aktuální verze ICQ2Go! již podporuje i komunikaci prostřednictvím protokolu HTTP. Je tak narozdíl od všech klonů ICQ i jiných komunikačních programů (MS Messenger, AOL Instant Messenger) funkční také tam, kde si díky firewallu nebo potřebné autentizaci na proxy jinak vůbec neškrtnete. A protože jsem tvor lenošný, chtěl jsem, aby se mi ICQ ve Windows spouštělo samo podobně jako klasické ICQ.

Otevřít okno daných parametrů není problém, jak ale udělat, aby naše stávající stránka byla zobrazena v okně daných vlastností a rozměrů? V prohlížečích na bázi Mozzily (Mozilla, Netscape, Phoenix) jsou přístupné objekty, kterými lze ovládat vlastnosti vzhledu okna (popíšeme si je dále jako malý přídavek), v ostatních prohlížečích nám nezbyde nic jiného, než prostě otevřít nové okno s tou samou stránkou a původní okno zavřít. Tento článek je víceméně opakováním toho, co už v článcích na Intervalu probráno bylo, my si zde ale navíc ukážeme neobvyklé použití pro startování webových aplikací například po spuštění počítače.

Pokud do složky „Po spuštění“ zadáte adresu stránky ICQ2Go!, vyskočí sice stránka s appletem, ovšem startovací stránka zůstane otevřená a musíte ji ručně zavřít. Napadlo mě tedy udělat vlastní stránku, která otevře nové okno daných parametrů s appletem ICQ a sama se zavře. Toto samozavření také není úplně bez problému – Internet Explorer se mu brání hlášením „Stránka se pokouší zavřít…“. K vyřešení tohoto problému ale stačilo nahlédnout do článku o nových oknech prohlížeče, kde je popsán trik, jak toto obejít. Zbylo tedy vyřešit otevření nového okna s appletem ICQ2Go! Zde se bez mučením přiznám, že jsem prostě nahlédl do zdrojového kódu oficiální stránky služby ICQ2Go! a funkci, která otevře vhodné okno jak v IE tak v NN, jsem převzal. Výsledný kód je tedy tento:

<script type=“text/javascript“>
function goicqstart()
{
  if (navigator.appName==’Microsoft Internet Explorer‘)
    parent.self.opener=“interval.cz“;
  var leftpos = (screen.availWidth – 200)-40;
  resiz = (navigator.appName==“Netscape“) ? 0 : 1;
  window.open(„http://go.icq.com/icqgo/web/0,,,00.html“, „TOFI“, „width=158 ,height=446 ,top=40 ,left=“+leftpos+“, directories=no, location=no, menubar=no, scroll=no, status=no, titlebar=no, toolbar=no, resizable=“+resiz+““);
  window.close();
}
onload=goicqstart;
</script>
<div style=“font-family: Verdana; font-size: 11px; font-weight: bold“>Spouští se ICQ2Go!…</div>

Ve stránce se zobrazí text „Spouští se ICQ2Go!“, jakmile se stránka načte, aktivuje se funkce goicqstart(). V této funkci se otestuje, zda jde o prohlížeč Internet Explorer, aplikuje se již zmíněná finta na samočinné zavření okna bez reptání prohlížeče (okno se prostě přejmenuje a prohlížeč tak „ztratí“ kontrolu nad tím, co které okno může a nemůže dělat). Dále následuje část převzatá z původní stránky a nakonec zavření okna.

Zbývá jen dodat, že soubor, který jsme vytvořili, si uložíme někam na disk svého počítače a vytvoříme k němu zástupce do složky „Po Spuštění“. Ačkoli při startu jen krátce problikne okno, které se posléze samo zavře, není špatné nastavit i tomuto zástupci ve vlastnostech, aby se spouštěl minimalizovaně. Podobný princip můžeme tedy použít na jakoukoli aplikaci, kde chceme, aby uživatel pracoval v přesně definovaném okně. Prohlédněte si ukázku.

Jak jsem ale zmínil už v úvodu, v Mozzile můžeme použít pro vypnutí nebo prostě pro ovládání za běhu tento kód:

<script type=“text/javascript“>
<!–
self.menubar.visible=false;
self.toolbar.visible=false;
self.locationbar.visible=false;
self.personalbar.visible=false;
self.scrollbars.visible=false;
self.statusbar.visible=false;
//–>
</script>

Uvedenou část skriptu je možné vložit vpodstatě kamkoli do těla stránky. Jakmile se provede, všechny ovládací panely, adresní řádek a stavový řádek zmizí. Internet Explorer to bohužel nezná, takže vykonání tohoto skriptu v něm skončí chybou, nic ale nebrání korektním způsobem ošetřit, aby se kód prováděl pouze v prohlížeči Mozilla (Netscape). Záleží od nasazení aplikace. Pokud ji máme na intranetu, kde se používá převážně Mozilla, je možné test vynechat. Ideální by bylo upravit skript tak, aby v Mozille uvedeným postupem povypínal nechtěné prvky a v ostatních prohlížečích nezbyde nic jiného, než otevřít nové okno s definovanými parametry, jak je popsáno výše. Příklad takového skriptu:

<script type=“text/javascript“>
<!–
function cleanwindow()
{
  if (navigator.appName==’Netscape‘)
  {
    self.menubar.visible=false;
    self.toolbar.visible=false;
    self.locationbar.visible=false;
    self.personalbar.visible=false;
    self.scrollbars.visible=false;
    self.statusbar.visible=false;
    window.resizeTo(590,440);
    location.href=“novastranka.html“
  }
  else
  {
    window.open(„novastranka.html“, „cleanwindow“, „width=580, height=420, directories=no, location=no, menubar=no, scroll=no, status=no, titlebar=no, toolbar=no, resizable=yes“);
    if (navigator.appName==’Microsoft Internet Explorer‘)
      parent.self.opener=“interval.cz“;
    window.close();
  }
}
onload=cleanwindow;
//–>
</script>

Tento druhý skript funguje odlišným způsobem, využívá vlastnosti prohlížeče Mozilla. V tomto prohlížeči je start aplikace rychlejší, dokonce by ani nebylo třeba přesměrování, mohli bychom ponechat stávající stránku. Pak by ale bylo třeba ošetřit, aby se nám v ostatních prohlížečích aplikace nezacyklila, například předáním nějakého parametru URL. Jinak by se totiž stále aktivoval tentýž skript, který se pokouší otevřít v novém okně tutéž stránku a původní okno zavřít a vznikla by tzv. „černá díra“.

Všimněte si odlišných rozměrů v parametrech v části pro Netscape a v části, kde se otevírá nové okno – je to proto, že v prvním případě jde o velikost celého okna prohlížeče a v druhém o velikost části, ve které je viditelná stránka. Pokud chcete okna stejně velká ve všech prohlížečích, musíte zadávat hodnoty zkusmo. Prohlédněte si druhou ukázku, ve které je do nového okna otevírán příklad z jednoho dřívějšího článku.

Všechny soubory ukázek si můžete také stáhnout a po rozbalení otestovat na svém počítači.

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