Клиент жағында орындалатын технологиялар. JavaScript

Гипермәтiн ақпараттық жүйесi көптеген ақпараттық түйiндерден, көптеген гипермәтiн байланыстарынан, осы белгiлi түйiндерден және түйiн манипуляция жасау құралдары және байланыстарынан тұрады. World Wide Web технологиясы- бұл Internetке гипермәтіндік таратылған жүйелерді ендіру технологиялары, және сондықтан да ол осындай жүйелердің ортақ анықтамасына сәйкес болуы керек. Ол дегеніміз, жоғары айтылған гипермәтіндік жүйелердің компоненттері Web-те болуы қажет.

Гипермәтіндік жүйе секілді Web-ті екі көзқараспен қарастыруға болады. Біріншіден, гипермәтіндік ауысулармен (сілтемелер - контейнер ANCHOR) байланысқан суреттелетін беттердің жиынтығы. Екіншіден, суреттелетін беттерді (мәтін, графика, мобильді код және т.б.) құрайтын элементарлы ақпараттық объектілердің жиынтығы. Соңғы жағдайда гипермәтіндік беттің ауысу жиынтығы – бұл суретке мәтін енгізілген секілді ақпараттық фрагмент.

Екінші амалда гипермәтіндік желі элементарлы ақпараттық объектілер жиынтығында HTML-беттермен анықталынады, олар гипермәтіндік байланыстарда рөл атқарады.

Бұл тәсіл дайын компоненттерінен «жазға арналған» көрсетілетін беттерді құру тұрғысынан әлдеқайда нәтижелі болып табылады.

Web беттерді генерациялау барысында "клиент-сервер" сәулетімен байланысқан дилемма туындайды. Беттерді клиент жағында да, сервер жағында да түрлендіруге болады. 1995 жылы Netscape компаниясының мамандары JavaScript бағдарламмалау тілін құрастырып, клиенттік жағындағы беттерді басқару механизмін құрастырды.

Осылайша, JavaScript – бұл клиент жағында Web гипермәтіндік беттердің сценарийлерін басқару тілі. Егер нақтырақ болсақ, онда JavaScript – бұл клиент жағындағы бағдарламмалу тілі ғана емес. JavaScript Liveware тегі, Netscape сервері жағындағыалмастыру құралы болып табылады. Алайда, ең танымал JavaScript бағдарламалау клиенттік жағында берілген.

JavaScript негізгі идеясы HTML - контейнерлерді атрибуты мәндерін өзгерту және көру, HTML - беттерінде пайдаланушы орта сипаттарын көрсету мүмкіндігі болып табылады. Сонымен қатар, ешқандай бетті қайта жүктеу болмайды..

Іс жүзінде, бұл, мысалы, жаңа терезені ашу немесе ескерту, құжат бейнесі біріктірілген немесе бет түрінің түсін өзгертуде көрінеді.

"JavaScript" атауы Netscape меншігі болып табылады. Microsoft құрастырушыларымен жүзеге асырылған тілді іске қосу, ресми түрде Jscript деп аталады. JScript версиясы JavaScript сәйкес версияларымен үйлесімді (егер нақтырақ болсақ, онда соңына дейін емес), яғни JavaScript JScript тілінің ішкі жиынтығы болып келеді.

JavaScript ECMA (European Computer Manufacturers Association – компьютерлердің европалық өндірушілердің ассоциациясы) стандартталған. Сәйкес стандарттар ECMA-262 және ISO-16262. Осы стандарттармен ECMAScript тілі анықталады, ол JavaScript 1.1 эквивалентті болады. Ескере кетсек, что не все реализации барлық JavaScript жүзеге асырулар бүгінде толық ECMA стандарттарына сәйкес. Осы курста біз барлық жағдайларда атын JavaScript деп пайдаланамыз.

JavaScript-қа қолданылатын объекті модельдердің түсінігі

Клиенттік жағында басқару беттердің тетігін жасау үшін құжат нысаны моделін пайдалануға ұсынылды. Осы модельдің мәні, әрбір HTML-контейнер - бұл объект, мұнда ол үш мағынамен сипатталады:

· қасиеттер;

· тәсілдер;

· оқиғалар.

Объектілі модельді бет және браузер арасындағы байланысты тәсіл деп көрсетуге болады. Объектілі модель – бұл объектілерді, тәсілдерді, қасиеттерді және оқиғаларды көрсету, беттегі сценарийдің шығыс мәтіні және HTML кодымен қолайлы жұмыс үшін түрінде браузердің бағдарламмалық қамтамасыздандыруында жүреді және қатысады. Біз соның көмегімен өзіміздің қалауларымызды браузерге және содан кейін беттің келушісіне жеткізе аламыз. Браузер біздің командаларымызды орындайды және сәйкесінше терезедегі бетті өзгертеді.

Қасиеттері, әдістері мен оқиғалар бірдей жиынтығымен ұқсас объектілер объектілердің біртектес классына біріктіріледі. Класстар – бұл мүмкін объектілерді сипаттау. Объектілердің өзі құжатты браузерге жүктеген кейін көрінеді немесе бағдарламма жұмысының нәтижесі секілді. Жоқ объектіге бағынбау үшін осы туралы әрдайым есте сақтаған жөн.

Қасиеттер

Көптеген HTML-контейнерлер атрибуттарға ие. Мысалы, зәкір контейнері ... HREF атрибутына ие, оны ол гипермәтіндік сілтемеге айналдырады:

intuit

Егер зәкір контейнерін ... объект ретінде қарастырсақ , онда HREF атрибут объектінің «зәкір» қасиетін сұрайды. Бағдарламмалаушы атрибуттің мағынасын өзгерте алады және, сондықтан, объектінің қасиеті:

document.links[0].href="intuit.htm";

Атрибуттардың барлығында мағынаны өзгертуге келмейді. Мысалы, графикалық суреттің ені мен ұзындығы беттегі сурет көрінетін уақыттағы ең алғашқы жүктелуі бойынша анықталады. Алғашқыны ауыстыратын қалған барлық суреттер оған дейінгілерді масштабтайды. Әділдік, бұл Microsoft Internet Explorer сурет өлшемін өзгертуі мүмкін екенін атап өткен жөн.

Суреттегі қасиеттерді жалпылау үшін JavaScript –ке объектілер үлестірілуі мүмкін, HTML-белгісінде аналогтары болмайды. Мысалы, Navigator объектісі деп аталынатын орындау ортасы, немесе браузер терезесі, JavaScript объектілері әдетте ең жоғары болып табылады.

Тәсілдер

JavaScript терминологиясында объект тәсілдері оның қасиетінің өзгерту функциясын анықтайды. Мысалы, "құжат" объектісімен open(), write(), close() тәсілдері байланысқан. Осы тәсілдер құжаттың мазмұнын өзгертуге немесе түрлендіруге мүмкіндік береді. Қарапайым мысал келтірейік:

function hello()

{

id=window.open("","example","width=400, height=150");

id.focus(); id.document.open();

id.document.write("

Привет!

");

id.document.write("


");

id.document.write("

id.document.write("onClick=window.opener.focus();

window.close();>");

id.document.close();

}

Осы мысалда open() тәсілі құжатқа жазу ағыны ашады,

write() тәсілі осы жазуды жүзеге асырады, close() тәсілі құжатқа жазылу ағынын жабады. Осылардың барлығы қарапайым файлды жазу барысында секілді жүреді. Егер терезе өріс мәртебесі (әдетте, онда құжат жүктелген деңгейі көрсетіледі) бар болса, онда мұндай құжатты жүктеген кезде құжаттағы жабық жазбалардың ағынында төртбұрышты жазуды жалғастырылуы «сенделеді».

Оқиғалар

Қасиеттер мен тәсілдерден басқа объектілер оқиғалармен сипатталынады. Шынында, JavaScript те бағдарламмалаудың мәні осы оқиғалардың жазылуын баптауында болып табылады. Мысалы, button (INPUT контейнері button түрі- "Батырма") түріндегі объектімен click оқиғасы болуы мүмкін, яғни қолданушы батырмаға басуы мүмкін. Осы үшін INPUT контейнерінің атрибуттары click – onClick оқиғаларының өңделу атрибуттарымен кеңейтілген. Осы атрибуттың мағынасы негізінде оқиғаны өңдеу бағдарламмасы көрсетіледі, оны HTML-құжатының авторы JavaScript –та жазуы қажет:

"window.alert(Өтінемін, тағы да басыңыз);">

Оқиғаны құрастырушылар осы оқиғалармен байланысқан контейнерлерде көрсетіледі. Мысалы, BODY контейнері барлық құжаттың қасиетін анықтайды, сондықтан оқиғаны құрастырушы барлық құжатты жүктеудің аяқталуы осы контейнерде onLoad атрибутының мағынасы ретінде көрсетіледі.

Ескерту. Қатаң айтқанда, әрбір браузер, Internet Explorer, Netscape Navigator немесе Opera болсын өзінің объектілі моделіне ие. Әрбір браузерлердің объектілі модельдері (және біреудің әртүрлі нұсқалары) бір бірінен айырмашылығы бар, бірақ бірдей құрылымға ие. Сондықтан әрбіріне жеке-жеке тоқтап кетуге ешқандай мағына болмайды.

Біз барлық браузерге қатысы болатын ортақ тәсілді қарастырамыз, кейбір кезде, әрине, олардың арасындағы айырмашылықтарға көңіл бөлеміз.

Размещение кода на HTML-бетте кодты орналастыру

Кез келген жаңадан бастап жүрген бағдарламмалаушының басты сұрағы: "Бағдарламманы қалай рәсімдеу керек және оны қалай орындау керек?". Осыған оңайырақ жауап беріп көрейік, бірақ JavaScript-кодты қолданудың барлық тәсілдерін ұмытпаған жөн.

Біріншіден, JavaScript-код браузер атқарады.Оған JavaScript интерпретаторы орнатылған. Сондықтан, бағдарламманың орындалуы осы интерпретатор қашан және қалай басқаруды алатынына байланысты. Бұл, өз кезегінде, кодты функционалды қолдануға байланысты. Жалпы жағдайда JavaScript функционалды қолданудың төрт тәсілін көрсетуге болады:

· гипермәтіндік сілтеме (URL сұлбасы);

· оқиғаны өңдеу (handler);

· алмастырып қою (entity) (Microsoft Internet Explorer – де 5.X және одан жоғары нұсқаларында жүзеге асырылған);

· қою (SCRIPT контейнері).

JavaScript туралы оқулықтарда суреттеу JavaScript қолдану әдетте SCRIPT контейнерінен бастайды. Бірақ бағдарламмалаудың көзқарасынан айтқанда бұл тіпті де дұрыс емес, өйткені осындай тәртіп кілттік сұраққа жауап бермейді: JavaScript-код қалай басқаруды алады? Яғни қалай шағыртылады және JavaScript жазылған және HTML – құжатқа орналастырылған бағдарламма қалай орындалады. Автордың кәсібіне байланысты HTML-беттер және бағдарламмалаудың негізімен танысу оның деңгейін бірнеше JavaScript меңгеру нұсқалары болуы мүмкін. Егер сіз классикалық мәннің бағдарламмалаушысы болсаңыз (С, Fortran, Pascal және т.б.), онда бағдарламмалауды құжатты ішкі денесінен бастағаны жеңілірек, егер сіз Windows-та бағдарламмалауда үйренсеңіз, онда осы жағдайда оқиғалар құрастырушыларын бағдарламалаудан бастаңыз, егер сіз HTML-белгісінде ғана тәжірибеңіз болса немесе онда көп уақыт бағдарламма жазбасаңыз, олай болса гипермәтіндік ауысуларды бағдарламмалаудан бастаған жөн.

URL-сұлба JavaScript

URL (Uniform Resource Locator) сұлба – бұл Web-технологияның негізгі элементтерінің бірі. Web –тегі әрбір ақпараттық ресурс өзінің әмбебап URL –на ие. URL HREF атрибутында A контейнерін, SRC атрибутында IMG контейнерін, ACTION атрибутында FORM контейнерін және т.б көрсетеді. Барлық URL кіріс сұлбаларына бөлінеді, олар кіріс хаттамасынан ресурсқа тәуелді, мысалы, FTP-архивына кіру үшін ftp сұлбасы, Gopher-архивына – gopher сұлбасы қолданылады, электрондық поштаны жіберу үшін – smtp сұлбасы қолданылады. Сұлбаның түрі бірінші компонент бойынша анықталынады URL: http://intuit.ru/directory/page.html. Осы жағдайда URL http басталады- бұл кіріс сқлбасының анықтамасы (http сұлба).

Гипермәтіндік жүйені бағдарламмалау тілінің негізгі есебі гипермәтіндік ауысуларды бағдарламмалау болып табылады. Бұл дегеніміз, сол немесе басқа гипермәтіндік сілтемені таңдау барысында гипермәтіндік ауысуларды жүзеге асыратын бағдарламма шақырылады. Стандартты бағдарламмалардың Web-технологиялары беттерді жүктеу бағдарламмалары болып табылады. JavaScript стандартты бағдарламманы қолданушы бағдарламмасына ауыстыруға мүмкіндік береді. HTTP хаттамасы бойынша JavaScript тілінде бағдарламмаланған ауысуларды стандартты ауысудан анықтау үшін құрастырушылар жаңа URL – JavaScript сұлбасын енгізді:

<A HREF="JavaScript:JavaScript_код">...</A>

<IMG SRC="JavaScript:JavaScript_код">

Осы жағдайда "JavaScript_код" мәтіні JavaScript-та бағдарламма-құрастырушыларды білдіреді, олар бірінші жағдайда гипермәтіндік сілтемелерді таңдау барысында және екінші жағдайда суреттерді жүктеу барасында шақырылады. Мысалы, Назар аударыңыз!!! гипермәтіндік сілтемені басқан кезде келесі ескерту терезесін алуға болады:

<A HREF="JavaScript:alert(Назар аударыңыз!!!);"> Назар аударыңыз!!!</A>

Формада submit түріндегі батырманы басу барысында осы форманың мәтіндік өрісін толтыруға болады:

<FORM NAME=f METHOD=post

ACTION="JavaScript:window.document.f.i.VALUE=

Батырмасын басамыз Click;void(0);">

<TABLE BORDER=0>

<TR>

<TD><INPUT NAME=i></TD>

<TD><INPUT TYPE=submit VALUE=Click></TD>

<TD><INPUT TYPE=reset VALUE=Reset></TD>

</TABLE>

</FORM>

URL-да күрделі бағдарламмаларды және функция қоңырауларын орналастыруға болады. Тек есте сақтаған жөн, JavaScript сұлбасы барлық браузерлерде жұмыс істемейді, тек төртіншіден бастап Netscape Navigator және Internet Explorer нұсқаларында ғана жұмыс атқарады.

Осылайша, гипермәтіндік ауысуларды бағдарламмалау барысында гипермәтіндік сілтеме бойынша қолданушы «басқаннан» кейін ғана интерпретаторды басқара алады.

HTML-құжаттың ішіне кодты орналстыру

Шынында, айырықша әртүрлілік бұл жерде жоқ. Кодты құжаттың басында немесе HEAD контейнерінің ішінде немесе BODY сыртында орналастыруға болады. Соңғы тәсіл және оның ерекшеліктері "Браузер жағында HTML-белгісін шартты түрлендіру" бөлімінде қарастырылады. Сондықтан құжаттың басына көңіл аударамыз.

Атаудағы код SCRIPT контейнерінің ішіне орналастырылады:

<HTML>
<HEAD>
<SCRIPT>
function time_scroll()
{
d = new Date();
window.status = d.getHours() +":"+d.getMinutes() +":"
+d.getSeconds();
setTimeout(time_scroll();,500);
}
</SCRIPT>
</HEAD>
<BODY onLoad=time_scroll()>
<CENTER>
<H1>Жағдай жолындағы сағаттар </H1>
<FORM>
<INPUT TYPE=button VALUE="Терезені жабу" onClick=window.close()>
</FORM>
</CENTER>
</BODY>
</HTML>
Осы мысалда біз құжаттың басында time_scroll() функциясын хабарладық, ал содан кейін BODY тегінің (onLoad=time_scroll()) контейнері басында load оқиғасын құрастырушы ретінде шақырдық.
Мысал ретінде ауысуларды хабарлауды ата-баба терезесінен ұрпақ терезесінің жағдайының ауысуын қарастырайық: келесі функциялардың көмегімен бала терезесін құрастырайық, оны хабарлайық және содан кейін шақырамыз:
function sel()
{
id = window.open("","example","width=500,height=200,status,menu");
id.focus();
id.document.open();
id.document.write("<HTML><HEAD>");
id.document.write("<BODY>");
id.document.write("<CENTER>");
id.document.write("<H1>Change text into child window.</H1>");
id.document.write("<FORM NAME=f>");
id.document.write("<INPUT TYPE=text NAME=t SIZE=20
MAXLENGTH=20 VALUE=This is the test>");
id.document.write("<INPUT TYPE=button VALUE=Close the window
onClick=window.close()></FORM>");
id.document.write("</CENTER>");
id.document.write("</BODY></HTML>");
id.document.close();
}
<INPUT TYPE=button VALUE="Мысал терезесінде жағдай өрісін ауыстырамыз"
onClick="id.defaultStatus=Привет; id.focus();">
Ата-баба терезесін аша, біз id айнымалысын id=window.open() терезе объектісінің нұсқауына орналастырдық. Енді біз оны Window объект классының идентификаторы ретінде пайдалана аламыз. Біздің жағдайда id.focus() қолдану міндетті. "Мысал терезесінде жағдай өрісін өзгерту" батырмасын басу барасында ата-ана терезесіне фокусты жіберу жүргізіледі. Ол терезе көлеміне ие болуы мүмкін. Осы өзгертулер ата-баба терезенде жүргізілуі мүмкін, олар ата-ана терезесінде жасырын болады. Ол үшін өзгертулерді көру үшін фокусты жіберу керек. id айнымалысы осындай функциялардың шеңберінде анықталуы тиіс, солай істелінген де. Осы жағдайда ол терезе қасиеті болып келеді. Егер біз бала терезесінің ашылу функциясының ішіне орналастырсақ, онда click оқиғасын құрастырушысынан оған назар аудара алмаймыз .
Браузер жағындағы HTML-белгісін шартты түрде түрлендіру
Әрдайым серверден бетті алу жағымды, біздің браузердің немесе қолданушының мүмкіндігіне қарай құрастырылады. Осындай беттерді түрлендірудің тек қана екі мүмкіндігі бар: сервер жағында немесе тікелей клиентте. JavaScript-коды клиент жағында орындалынады (сайып келгенде, Netscape компаниясының серверлері JavaScript-кодты сервер жағында да орындауға мүмкіндігі бар, тек осы жағдайда ол LiveWire-код деген атауға ие; LiveConnect шатастыруға болмайды), сондықтан тек клиент жағындағы түрлендіруді қарастырайық.
HTML-белгісін түрлендіру үшін SCRIPT контейнерін құжаттың денесіне орналастырады. Қарапайым мысал – локальды уақытты беттің ішіне салу:
<BODY>
...
<SCRIPT>
d = new Date();
document.write("<BR>");
document.write("Бетті жүктеу кезі:
"+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds());
document.write("<BR>");
</SCRIPT>
...
</BODY>