Časování

Spuštění akce po určitém čase - Zrušení načasované události - Opakovné časování 

Metody setTimeout(), clearTimeout(), setInterval() a clearInterval() se používají na časování událostí. 

Jsou to metody objektu window. 

Protože setInterval() a clearInterval() jsou dostupné až od čtvrtých verzí prohlížečů, v praxi se nedoporučují a nahrazují se rekurzí timeoutů.

Syntaxe:

proměnná = setTimeout("akce", milisekundy); // načasuje akci 
clearTimeout(proměnná); // zruší načasování 
proměnná2 = setInterval("akce", milisekundy); // načasuje opakovanou akci 
clearInterval(proměnná2); // zruší opakované načasování 

Akce je libovolný příkaz JavaScriptu. Musí být v uvozovkách, jinak se provede hned. Doporučuji tam zapisovat pouze jméno funkce, protože JavaScript v tom zápisu nepozná lokální proměnné. Rušení načasování se moc nepoužívá, ale někdy je potřeba.

Spuštění akce po určitém čase

setTimeout("window.close()", 12000);

Po dvanácti sekundách (tj. 12000 milisekund) se zavře aktivní okno (window.close() ). 

V praxi se častěji do časování zapisuje odkaz na funkci než vlastní kód. A sekundy se lépe zadávají jako součin. Například po pěti minutách spustíme funkci akce():

setTimeout("akce()", 5 * 60 * 1000);

Zrušení načasované události

Aby šla načasovaná událost zrušit, musí se spouštět uložená do proměnné, např. casovac. Příklad časované deaktivace okna uložené do proměnné:

casovac = setTimeout("window.blur()", 12000);

Rušení načasování pak obvykle zajišťuje nějaká událost. Např. kliknutí na tlačítko. Rušící metoda clearInterval(přebírá jako parametr tu proměnnou casovac).

<input type="button" value="Zrušit časování"
onclick="clearTimeout(casovac)">

Příklad časování a zrušení časování.

Pozor, v jiných návodech se často proměnná "casovac" zapisuje jako "id", tedy clearTimeout(id). To ale vede k chybám, pokud je pozastavení intervalu vázáno na událost nějakého prvku (třeba input), protože id je asi nějaké klíčové slovo pro prvky.

Opakované časování

Metoda setInterval("akce", čas) opakuje akci pokaždé, když uplyne čas. Využívá se to zejména při animacích, ale i jinde. Například chci, aby se okno aktivovalo do popředí (focus() ) každých pět minut: 

window.setInterval("window.focus()", 5 * 60 * 1000);

Když uživatel pracuje s více okny nebo aplikacemi, bude se mu toto okno každých pět minut připomínat. Příklad na opakované časování.

Časování se ruší metodou clearInterval(proměnná), která funguje obdobně jako clearTimeout(). 

Opakované časování rekurzí

Protože ve starších verzích (trojkových) prohlížečů nešlape metoda setInterval(), obcházelo se to rekurzí. Metodou setTimeout("se volala funkce, která obsahovala volání sebe samé", načasované o interval). Symbolický zápis:

function opakovana() {
// něco udělá, proto se to časuje;
window.setTimeout("opakovana()", 1000); // volá sebe samu odloženou o sekundu
}

Tento zápis je ještě dost často vidět, ale už jej moc nedoporučuju, protože třetí verze prohlížečů ze světa už skoro zmizely.

 

Reklama

www.webhosting-c4.cz, extra rychlý SSD webhosting s doménou v ceně
o tvorbě, údržbě a zlepšování internetových stránek

Návody HTML CSS JavaScript Články Ostatní

Základy, objekty Příklady

Jak psát web píše Yuhů, Dušan Janovský. Kontakt.