Příklad Javascriptové minutky
Často jsem v práci zapomínala, že jsem si dala vařit vodu na kafe či čaj. Voda se převařila jednou - zapomněla jsem si pro ni dojít, převařila se podruhé, ale skleróza byla neodbytná. Koupit si za pár korun natahovací minutku na tržišti? Její zvuk by pravděpodobně způsobil poplach v kanceláři. Naprogramování si minutky v Javascriptu obnášelo mimo volitelného nastavení hlasitosti upozornění také skvělý trénink v programování.
Do žlutého políčka zadejte čas v sekundách a stiskněte tlačítko Spusť. V případě potřeby je možné běh skriptu zastavit tlačítkem Zastav anebo Esc (na klávesnici). Díky nativní podpoře WAVů v Internet Explorerech je v nich skript bezproblémově funkční. Ve Firefoxu a Opeře se ale bez doinstalovaného pluginu neozve zvuk, proto je zvukové upozornění nastaveno pouze pro IE. Zdrojový kód možno shlédnout »zde«
Zdrojový kód minutky
<!--[if IE]>
<embed src="/extra/zvuk.wav" name="zvuk" hidden width=0 height=0
autostart="false" loop="1">
<![endif]-->
<div id="minutka">
<form name="fm"><span>Bylo zadáno:</span>
<input type="text" id="zadano" value=""><span> sekund</span><br>
<input type="text" id="sekundy" name="sekundy">
<input type="button" id="vyp" value="Zastav" onclick="zastav();">
</form><br>
<div id="sem">
<img id="kafe" src="/extra/kafe.gif" style="visibility: hidden;">;</div>
</div>
<script type="text/javascript" language="JavaScript"><!--
document.getElementById("zadano").focus();
var c;
var t;
//aby se běh skriptu neurychlil opakovaným klikáním na "Spusť"
var zapnuto = false;
function pocitej()
{
if(c <= 0)
{
document.fm.sekundy.value = c;
clearTimeout(t);
zobrazit('kafe');
if(navigator.appName == "Microsoft Internet Explorer")
{
document.zvuk.play();
}
zapnuto = false;
document.fm.zadano.focus();
document.fm.zadano.select();
}
else
{
document.fm.sekundy.value = c;
}
c--;
}
function spust()
{
if(!zapnuto)
{
zapnuto = true;
c = parseInt(document.fm.zadano.value);
if(isNaN(c))
{
alert("Zadejte prosím čas v sekundách");
zastav();
zapnuto = false;
document.fm.zadano.focus();
document.fm.zadano.select();
}
else
{
document.fm.zadano.value = parseInt(c);
document.fm.sekundy.value = parseInt(c);
c--;
t = setInterval(pocitej, 1000);
}
}
}
function zastav()
{
clearTimeout(t);
zapnuto = false;
if(navigator.appName == "Microsoft Internet Explorer")
{
document.zvuk.stop();
}
document.fm.zadano.focus();
document.fm.zadano.select();
}
function zobrazit(co)
{
var obr = document.getElementById(co), krok = 0.05, o = krok;
for(var i = krok; i <= 1; i += krok)
{
//vzrůstá čas v ms => vzrůstá viditelnost obrázku
setTimeout(krokAnimace, i * 700);
}
function krokAnimace()
{
var of = Math.round((o) * 100);
obr.style.cssText = "opacity: " + o + ";
filter: alpha(opacity=" + of + ");
-moz-opacity: " + o + "; -khtml-opacity: " + o + "; ";
o += krok;
}
}
//-->
</script>