HTML, Excel, Word, SEOÎñíîâû JavaScript ⇒ Ñîáûòèÿ

ÎÑÍÎÂÛ JavaScript

Ó÷åáíèê JavaScript
·Çíàêîìñòâî ñ JS. Ïåðåìåííûå, îïåðàòîðû, îïåðàöèè
·Ôóíêöèè
·Ìîäåëü HTML äîêóìåíòà
·Èåðàðõèÿ äîêóìåíòîâ â áðàçóåðå
·Ôîðìû
·Îêíà è ôðåéìû
·Ññûëêè, çàãîëîâîê, ñòàòóñ
·Ñîáûòèÿ
·Ñîáûòèÿ êëàâèàòóðû è ìûøè
·Ñîáûòèÿ. Òàéìåð
·Ñòèëè. Óïðàâëåíèå ñòèëÿìè
·Ñëîè è áëîêè. Óïðàâëåíèå âèäèìîñòüþ
·Îáúåêòû JS
·Âíåøíèå îáúåêòû
·Âíóòðåííèå îáúåêòû
·Ìàññèâû
·Ðåãóëÿðíûå âûðàæåíèÿ
·Ìàòåìàòèêà â JS
·Ïðèìåð ïðîñòîãî êàëüêóëÿòîðà
·Äàòà è âðåìÿ
·Cookies è õðàíåíèå ñîñòîÿíèÿ
·Íåìíîãî îá AJAX
·Ðàáîòà ñ WebMoney

 

Êóðñ îáó÷åíèÿ JavaScript: Ñîáûòèÿ


Àâòîð: Àðòåìüåâ Ñåðãåé Èãîðåâè÷ ICQ: 438856621 email: _spin_@bk.ru


JavaScript ïîääåðæèâàåò îòñëåæèâàíèå íåêîòîðûõ èçìåíåíèé è äåéñòâèé ïîëüçîâàòåëÿ íà ñòðàíèöå. Êàæäîå òàêîå èçìåíåíèå èëè äåéñòâèå ïîðîæäàåò ñîáûòèå, êîòîðîå ïðîãðàììèñò ìîæåò ïåðåõâàòèòü è âûïîëíèòü êàêèå-òî íåîáõîäèìûå äåéñòâèÿ. Ïðèìåðû ñîáûòèé - êëèê ìûøè íà ýëåìåíòå ñòðàíèöû, ïîëó÷åíèå ôîêóñà ââîäà ýëåìåíòîì ôîðìû, îêîí÷àíèå çàãðóçêè èëè âûãðóçêè ñòðàíèöû.

Ñïèñîê ñîáûòèé, äîñòóïíûõ â êàæäîì îòäåëüíîì áðàóçåðå îáû÷íî ìîæíî óçíàòü íà ñàéòå êîìïàíèè-ðàçðàáîò÷èêà èëè â ñïðàâî÷íîé äîêóìåíòàöèè. Ñïèñîê îñíîâíûõ îáðàáîò÷èêîâ îïðåäåë¸í ñòàíäàðòîì W3C, íî êàæäûé ðàçðàáîò÷èê áðàóçåðà âîëåí äîáàâëÿòü îáðàáîò÷èêè ïî ñâîåìó æåëàíèþ. Íàïðèìåð, ñîáûòèå onAbort ïîääåðæèâàåòñÿ IE, íî íå ÿâëÿåòñÿ ñòàíäàðòíûì è íå ïîääåðæèâàåòñÿ áðàóçåðàìè Netscape.

 ïåðâûõ âåðñèÿõ áðàóçåðîâ Web-ïðîãðàììèñòû ìîãëè îïåðèðîâàòü ëèøü ñ íåáîëüøèìè íàáîðàìè ñîáûòèé äëÿ êàæäîãî òèïà îòîáðàæàåìûõ ýëåìåíòîâ, íî â ïîñëåäíèõ âåðñèÿõ ìîæíî íàçíà÷èòü ñîáûòèÿ ïðàêòè÷åñêè ëþáîìó ýëåìåíòó ñòðàíèöû.

Íàèáîëåå ïîïóëÿðíûå è ïîëåçíûå ñîáûòèÿ ïåðå÷èñëåíû â òàáëèöå:

Ñîáûòèÿ ôîðì è ýëåìåíòîâ ñòðàíèöû
onchange() Ýëåìåíò òåðÿåò ôîðêóñ ââîäà, à ñîäåðæèìîå ýëåìåíòà èçìåíèëîñü çà âðåìÿ, ïîêà ýëåìåíò áûë â ôîêóñå.
onselect() Êàêàÿ-òî ÷àñòü òåêñòà âíóòðè ýëåìåíòà ñòàíîâèòñÿ âûäåëåíîé.
ousubmit() Â ôîðìå íàæàòà êíîïêà "Îòïðàâèòü", íî îòïðàâêà ôîðìû íà ñåðâåð åù¸ íå ïðîèçâîäèëàñü.
Ñîáûòèÿ ìûøè
onclick() Ïðîèçâåä¸í êëèê êíîïêîé ìûøè íà ýëåìåíòå óïðàâëåíèÿ. Ñîáûòèå âîçíèêàåò ïîñëå òîãî, êàê êíîïêà ìûøè áûëà îòïóùåíà.
onmousedown() Íàæàòà êíîïêà ìûøè.
onmousemove() Óêàçàòåëü ìûøè äâèæåòñÿ âíóòðè îáëàñòè îòîáðàæåíèÿ ýëåìåíòà.
onmouseout() Óêàçàòåëü ìûøè âûøåë èç îáëàñòè îòîáðàæåíèÿ ýëåìåíòà.
oumouseover() Óêàçàòåëü ìûøè íàõîäèòñÿ âíóòðè îáëàñòè îòîáðàæåíèÿ ýëåìåíòà.
onmouseup() Îòæàòà êíîïêà ìûøè.
Ñîáûòèÿ îêíà (îáúåêò window)
onblur() Ýëåìåíò óïðàâëåíèÿ òåðÿåò ôîêóñ ââîäà, ò.å. êóðñîð ïåðåõîäèò ê äðóãîìó ýëåìåíòó.
onfocus() Îòîáðàæàåìûé ýëåìåíò ïîëó÷èë ôîêóñà ââîäà. Äëÿ òåêñòîâûõ ïîëåé ýòî ñîáûòèå îçíà÷àåò, ÷òî êóðñîð óæå íàõîäèòñÿ â äàííîì ýëåìåíòå.
onload() Çàâåðøåíà çàãðóçêà ñòðàíèöû.
onunload() Ïðîèçâîäèòñÿ âûõîä èç äîêóìåíòà (çàêðûòèå èëè ïåðåíàïðàâëåíèå ñòðàíèöû íà äðóãîé àäðåñ).
Ñîáûòèÿ êëàâèàòóðû
onkeydown() Íàæàòà êíîïêè íà êëàâèàòóðå.
onkeypress() Êíîïêà íà êëàâèàòóðå íàæàòà è íå îòïóñêàåòñÿ äîëüøå, ÷åì èíòåðâàë ïîâòîðåíèÿ. Äëèòåëüíîñòü èíòåðâàëà ïîâòîðåíèÿ ÿâëÿåòñÿ ñèñòåìíûì ïàðàìåòðîì è çàâèñèò îò íàñòðîåê îïåðàöèîííîé ñèñòåìû ïîëüçîâàòåëÿ.
onkeyup() Îòïóùåíà ðàíåå íàæàòàÿ êíîïêà.

Íàðÿäó ñî ñòàíäàðòíûìè ñîáûòèÿìè êîìïàíèÿ Microsoft â ñâîèõ áðàóçåðàõ IE âåðñèè 5.5 è âûøå ââåëà áîëüøîå êîëè÷åñòâî ñîáñòâåííûõ ñîáûòèé, íàïðèìåð oncut(), oncopy(), onselectstart() è ò.ï. Íî åñëè âû õîòèòå, ÷òîáû âàøè ñêðèïòû îäèíàêîâî õîðîøî ðàáîòàëè âî âñåõ áðàóçåðàõ - ñòàðàéòåñü èñïîëüçóéòå òîëüêî ñòàíäàðòíûé íàáîð ñîáûòèé.

×òîáû ïðè âîçíèêíîâåíèè ñîáûòèÿ âûïîëíèòü êàêèå-òî äåéñòâèÿ, íåîáõîäèìî ïðåäâàðèòåëüíî óêàçàòü îáðàáîò÷èê ýòîãî ñîáûòèÿ. Ýòî ìîæíî ñäåëàòü äâóìÿ ïóòÿìè: ïðîãðàììíî èëè íåïîñðåäñòâåííî â HTML-êîäå.

Ïðèìåð ïðîãðàììíîãî äîáàâëåíèÿ ñîáÿòèÿ onload():

<head>
	
	<script type="text/javascript" language="javascript">

		function initVariables()
		{
			alert('äîêóìåíò çàãðóæåí');
			retun true;
		}
		
		window.onload = initVariables;

	</script>
	


</head>

À ýòà âåðñèÿ ïðèìåðà èìååò òàêîé æå ôóíêöèîíàë, êàê ïðåäûäóùàÿ, íî îáðàáîò÷èê ñîáûòèÿ äîáàâëÿåòñÿ ñðåäñòâàìè HTML:

<head>	
	<script type="text/javascript" language="javascript">

		function initVariables()
		{
			alert('äîêóìåíò çàãðóæåí');
			retun true;
		}

	</script>
</head>

<body onload="initVariables();">

</body>

Àíàëîãè÷íûì îáðàçîì ìîãóò áûòü ïðèñâîåíû îáðàáîò÷èêè ñîáûòèé äðóãèì ýëåìåíòàì (ññûëêàì, ýëåìåíòàì ñïèñêà, êíîïêàì è ïð.).

Íåêîòîðûå ýëåìåíòû óæå èìåþ âñòðîåííûå îáðàáîò÷èêè ïî-óìîë÷àíèþ. Íàïðèìåð, êëèê ïî êíîïêå òèïà "submit" îòïðàâëÿåò ôîðìó íà ñåðâåð, à êëèê ïî ññûëêå ïåðåíàïðàâëÿåò áðàóçåð ïî óêàçàííîìó àäðåñó. Íî èíîãäà âîçíèêàåò íåîáõîäèìîñòü îòêëþ÷èòü ñòàíäàðòíûé îáðàáîò÷èê. Ñäåëàòü ýòî î÷åíü ïðîñòî - äîñòàòî÷íî â îáðàáîò÷èêå âåðíóòü çíà÷åíèå false èëè âîñïîëüçîâàòüñÿ ñâîéñòâàìè îáúåêòà event.

Ðàññìîòðèì ïðèìåð - ïðîâåðêà çíà÷åíèé ïîëåé ôîðìû ïåðåä îòïðàâêîé. Íàïðèìåð, ó íàñ åñòü ôîðìà ïîäïèñêè íà ïî÷òîâûå ðàññûëêè. Ôîðìà ñîñòîèò èç ïîëÿ ââîäà, êóäà ïîëüçîâàòåëü äîëæåí âïèñàòü ñâîé email, è êíîïêè "Îòïðàâèòü" òèïà "submit". Íàì íåîáõîäèìî ñîçäàòü ñêðèïò, êîòîðûé áóäåò ïðîâåðÿòü ïîëå ââîäà íà íàëè÷èå òåêñòà è çàïðåùàòü îòïðàâêó ôîðìû, åñëè ïîëüçîâàòåëü íè÷åãî íå ââ¸ë.



<head>	 	
	<script type="text/javascript" language="javascript"> 		
		function checkForm(evt) 		
		{ 	
			// ïîëó÷àåì çíà÷åíèå ïîëÿ email		
			var value = document.getElementById("email").value;
			
			// åñëè çíà÷åíèå îòñóòñòâóåò - 
			// ïðåäóïðåæäàåì ïîëüçîâàòåëÿ è 
			// çàïðåùàåì îòïðàâêó ïî÷òû
			if(!value)
			{	
 				alert('íå óêàçàí email!');
				return false;
			}
			// èíà÷å ïðîñòî ðàçðåøàåì îòïðàâêó ôîðìû
 			return true; 		
		} 	
	</script> 
</head> 

<body> 	
	<form action="subsribe.php" method="get" onsubmit="return checkForm();"> 		
		<input type="text" name="email" id="email" /> <br /> 		
		<input type="submit" name="sbm" id="sbm" value="Ïîäïèñàòüñÿ" /> 	
	</form> 
</body> 

Ýòîò ñêðèïò âïîëíå ðàáîòîñïîñîáåí, íî íå ñîâñåì êîððåêòåí ñ òî÷êè çðåíèÿ ñèñòåìû ñîáûòèé JavaScript. Ïðàâèëüíûå ñïîñîáû îáðàáîòêè è áëîêèðîâêè ñîáÿòèé ìû ðàññìîòðèì â óðîêàõ ýòîãî ðàçäåëà.

 



 íà÷àëî ñòðàíèöû



 íà÷àëî ñòðàíèöû