Mnohé WWW stránky umísťují reklamu v takzvaných Popup oknech – samostatných oknech prohlížeče, která se automaticky otevřou, vstoupíme-li na stránku. Na jednu stranu lze takto jednoduše získat více reklamního prostoru, na druhou stranu mnoho návštěvníků takové chování obtěžuje. V tomto článku se pokusíme o jakýsi kompromis: nevzdat se vyskakovacích oken, ale udělat jejich chování pro návštěvníka „kulturnější“.

Jak takový kompromisní výsledek vypadá? Pokud chvíli počkáte, mělo by se automaticky objevit okno s reklamou na Czechia.com, které za několik okamžiků samo zavře. Po dalších pár vteřinách se bude situace opakovat s druhým vyskakovacícm oknem a s jinou reklamou. Chcete-li celou animaci zopakovat, musíte provést reload této stránky

Otvírání a zavírání oken nezajišťuje nikdo jiný než JavaScript, který je tentokrát poměrně krátký. Můžeme jej celý uvést v rámci jednoho bloku přímo v těle stránky, nebo níže popisované funkce umístit do hlavičky stránky a jejich volání umístit zvlášť, přímo do textu nebo do události onLoad.

Nejprve volání funkce. Reklamu do nového okna můžeme umístit tak, že vytvoříme samostatné HTML stránky s reklamou a nově otevřené okno na ně odkážeme, nebo, což je popsáno v našem příkladu, umístíme HTML kód do okna explicitně pomocí JavaScriptu. Zde je tedy první část kódu, v níž do proměnných text1 a text2 složíme HTML, které se zobrazí v jednotlivých vyskakovacích oknech:

header = "<html><head><title>Reklama:</title>\n<body><center><br><b>";
footer = "</b></center></body></html>";
text1 = header + "<a href=’http://www.czechia.com/‘ target=’_blank‘>reklama na Czechia.com</a>" + footer;
text2 = header + "<a href=’http://www.interval.cz/‘ target=’_blank‘>Zkuste server Interval.cz!</a>" + footer;

Poté pomocí známého časovače setTimeout nastavíme interval (v msec), po němž dojde k otevření oken:

setTimeout(‚windowOpen(text1,2000)‘, 3000);    
setTimeout(‚windowOpen(text2,3000)‘, 8000);    

Poznámka: v příkladu jsou časy nastaveny tak, aby se okna otvírala postupně, tedy aby v každém okamžiku bylo otevřeno pouze jedno. Skript není ošetřen pro případ, že je otevřeno více oken současně a nemusí v takovém případě pracovat správně.

Otvírání okna zajišťuje funkce windowOpen, která přijímá dva parametry: text, což je HTML kód předávaný do okna, a timeout, což je čas, po němž dojde k uzavření okna. Zde je kód funkce windowOpen:

function windowOpen(text,timeout) {
    pomWnd = window.open(“,’wnd‘,’width=200,height=200′);
    pomWnd.document.write(text);
    setTimeout(‚windowClose(pomWnd)‘, timeout);
}

Funkce otevře Popup okno, umístí do něj HTML kód a nastaví časovač pro spuštění funkce windowClose, jež má na starost okna zavření:

function windowClose(wnd) {
    if (typeof(wnd.document) == "object")
        wnd.close();                
}

Ve funkci windowClose je snad jediný „špek“ celého příkladu: pokud bychom použili přímo syntaxi wnd.close(), mohl by skript havarovat v případě, že rychlý návštěvník zavře vyskakovací okno dříve než my, potažmo náš JavaScript. Internet Explorer většinou tuto drobnou chybu ani nezobrazí, Netscape však vypisuje do stavového řádku hlášení o chybě v JavaScriptu, což není pro autora stránky nejlepší vizitka. Proto použijeme operátor typeof, který vrátí řetězec s názvem typu výrazu, uvedeného jako „parametr“ operátoru. Pokud Popup okno stále existuje, existuje i objekt wnd.document (mohli bychom pro test použít i jiný), a typeof vrací řetězec „object“. Pokud již bylo okno zavřeno, wnd.document neexistuje, a typeof vrací „undefined“.

No a to je vše. Jak vidíte, příklad je to opravdu jednoduchý. Takže už jen obvyklých pár (tj. dvě) poznámky na závěr:

  • přes všechnu snahu Popup okno zůstává stále Popup oknem, a pokud máte pocit, že vaši návštěvníci jsou alergičtí na tento typ reklamy, asi ani uvedený skript na tom nic nezmění.
  • jedna aplikace: elegantní využití uvedené techniky jsem spatřil na kterémsi .COM zábavním webu, který pomocí rychlé série vyskakovacích oken předvedl na úvodní stránce stručnou, elegantně graficky provedenou, „tour“ webem – tedy náhled nejzajímavějších stránek, které se na webu nacházely.

Přeji vám příjemný den.

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