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.
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);
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.
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().
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.
Jak psát web píše Yuhů, Dušan Janovský. Kontakt.