1. Proiectare Site si Web Design - JavaScript Generalitati JavaScript est estee un lim limbaj baj de scr script ipting ing dezv dezvolt oltat at la ori origin ginee de Net Netsca scape, pe, per permit mitand and scrierea de secvente de program care se executa la aparitia unui eveniment utilizator. Vom prezen prezenta ta in continuare fundamentele fundamentele JavaS JavaScript cript si, mult mai impor important, tant, modalitati modalitati de valorificare si integrare in propriile pagini we b a tehnologiei JavaScript. JavaScript
nu
este
Java!
Trebuie sa facem distinctie intre limbajul de programare Java si limbajul de scripting JavaScript. Spre deosebire de JavaScript, Java este un limbaj de progrmare considerat "de nivel inalt" (foarte aproapiat de gandirea utilizatorului si nu de arhitectura calculatorului) care permite scrierea de aplicatii de aproape orice tip si grad de complexitate. Conside Cons ideram ram ca pent pentru ru mom moment ent nu tr trebui ebuiee sa enu enumer meram am dif difere erente ntele, le, tre trebui buiee doar sa retinem faptul ca JavaScript nu este Java. Pentru mai multe informatii privind limbajele Profesional" nal" oferita de Java si JavaScript va recomandam lucrarea "Java, JavaScript - Profesio site-ul nostru in cadrul pachetului de carti electronice generic intitulat "Internetul pentru Afaceri". Rularea
programelor
JavaScript
De ce avem nevoie pentru a rula scripturi concepute in limbajul JavaScript? Avem in primul pri mul ran rand d nevo nevoie ie de un bro browse wserr car caree sup suport ortaa Jav JavaSc aScrip riptt - de exem exemplu plu Net Netsca scape pe Navigat Navi gator or (i (incep ncepand and cu ver versiu siunea nea 2.0 2.0)) sau Mic Micros rosoft oft Int Intern ernet et Expl Explore orerr (Ms (Ms.. I.E I.E.. incepand cu versiunea 3.0). De vreme ce aceste browsere sunt extrem de raspandite, multi utilizatori (peste 90%) au posibilitatea de a rula fara probleme programele JavaScript. Pentru a utiliza in paginile proprii evenimente tratabile prin JavaScript avem bineinteles nevoie si de cunosterea - cel putin la nivel mediu - atat a limbajului HTML, cat si a limbajului de scripting JavaScript.
1
Inserarea
JavaScript
in
documentele
HTML
Codul Ja Codul JavaS vaScr crip iptt po poat atee fi in intr trodu oduss di dire rect ct in pa pagi gina na HT HTML ML.. Pe Pent ntru ru a ve vede deaa cu cum m functioneaza JavaScript, haideti sa ne aruncam privirile peste un exemplu simplu:
Pagina JavaScript
HTML
cu
Acesta este un document HTML continand JavaScript.
<script d oc oc um u m e n t . wr w r i t e ( "A "A ce ce s ta ta
Din n ou
l angu ag e= "J av aS c ri pt"> e s te te J a va v a S c ri ri p t! t! " )
text
si
c od
HTML.
La prima vedere acesta bucata de cod arata ca un fisier HTML normal. Singura noutate o constituie blocul <script>...:
<script d oc oc um u m e n t . wr w r i t e ( "A "A ce ce s ta ta
l angu ag e= "J av aS c ri pt"> e s te te J a va v a S c ri ri p t! t! " )
Acesta este JavaScript-ul nostru! Pentru a observa modul de functionare a scriptului vom salva codul HTML de mai sus ca si fisier normal HTML lansand pagina HTML astfel salvata in browserul nostru cu suport JavaScript. Daca browserul suporta JavaScript vom vedea 3 linii:
Acesta este un document HTML continand JavaScript. Acesta este J a va Sc ri p t! Din nou text si cod HTML. Este adevarat ca acest script extrem de simplist nu este unul folositor - acelasi rezultat il puteam obtine uzand de cod HTML mult mai simplu. Am dorit numai sa exemplificam utilizarea tagului <script>. Tot ce este intre eticheta <script> si eticheta este interpretat inter pretat drept cod JavaS JavaScript cript.. Putem observa folos folosirea irea document.write() - una dintre cele mai importante comenzi in programarea JavaScript. "Document.write() " este o rutina JavaScript folosita pentru a scrie text, imagini, etc... intr-un document (in acest
2
caz in documentul HTML curent). Asadar, micul nostru program JavaScript scrie textul "Acesta este JavaScript!" in documentul HTML in care a fost inserat.
2. JavaScript – Evenimente - Exemple Evenimente
Evenimentele sunt foarte importante in programarea JavaScript. Evenimentele sunt de cele mai multe ori declansate de actiuni ale utilizatorului. Daca utilizatorul apasa un buton, un eveniment de tip "Click" are loc. Daca mouse-ul este deasupra unei legaturi, atunci un eveniment de tip "MouseOver" are
loc.
Dorim ca programul JavaScript sa reactioneze la unele evenimente. Aceasta se poate realiza cu ajutorul managerilor de evenimente sau gestionarilor de evenimente - "eventhandlers". Un buton poate creea o fereastra atunci cand este apasat. Aceasta inseamna ca fereastra apare ca o reactie la evenimentul "Click". Managerul de evenimente (eventhandler-ul) pe care trebuie sa-l utilizam este numit "onClick". Acesta spune brwoser-ului computerului utilizator ce sa faca atunci cand evenimentul are loc. Urmatorul cod este un exemplu simplu de "event-handler onClick":
value="Click
me"
Exista cateva lucruri care trebuie analizate in codul JavaScript de mai sus
In primul rand putem observa ca am creeat un buton cu ajutorul unui formular (aceasta este o problema de HTML asa ca nu va fi analizata aici). Noua bucata de cod JavaScript este onClick="alert('Yo')" in interiorul tagului . Asa cum am spus deja, codul in cauza defineste ce se intampla cand butonul este apasat. Atunci cand un eveniment "Click" are loc, computerul executa alert('Yo') . Acesta este codul JavaScript (se observa ca nu utilizam tagul <script> in acest caz). "Alert()" ne permite sa cream ferestre de avertizare (de tip popup windows). In interiorul parantezelor trebuie sa specificam un sir. In cazul nostru sirul este 'Yo'. Acesta este un text ce va fi afisat in fereastra de avertizare. Deci scriptul dat ca exemplu creeaza o fereastra cu continutul 'Yo' atunci cand utilizatorul apasa butonul. Un lucru poate ne poate induce in eroare. In comanda document.write() am folosit ghilimele duble " " dar in combinatie cu alert() am folosit ghilimele simple ' '. De ce? In principiu pot fi ambele utilizate. Dar in ultimul exemplu am scris
3
onClick="alert('Yo')" puteti vedea ca am folosit si ghilimele simple si duble. Daca am fi scris onClick="alert("Yo")" interpretorul ar fi fost indus in confuzie pentru ca nu este clar care parte apartine de "onClick event-handler" si care nu. Asa ca trebuie sa alternam ghilimelele. Nu conteaza ordinea in care folosim ghilimelele - mai intai cele duble si apoi cele simple sau viceversa. Putem scrie fara nici o problema onClick='alert("Yo")' . Functii
Vom utiliza functii in cea mai mare parte a programelor noastre JavaScript. De aceea vom explora subiectul inca din aceasta sectiune. Functiile sunt o metoda profesionala de a lega mai multe comenzi impreuna. Sa scriem un script care furnizeaza un anumit text de trei ori consecutiv:
<script
Acest script, introdus intr-un document HTML, va scrie de trei ori:
Bine ai venit Acesta este JavaScript!
pe
pagina
mea!
Analizand codul sursa observam ca scriind de trei ori comanda ajungem la rezultatul scontat. Dar este eficient? Nu, deci haideti sa rezolvam problema mai simplu. Ce spuneti de codul urmator care face acelasi lucru:
<script
In scriptul din sectiunea BODY a documentului HTML de mai sus am definit si apelat o functie. Definirea s-a realizazt cu urmatoarele linii de cod:
function myFunction() { document.write("Bin e ai venit pe pagina mea! "); d oc um en t. wr it e( "A ce st a e st e j av as cr ip t! ") ; } Comenzile din interiorul {} tin de implementarea functiei myFunction() . Aceasta inseamna ca ambele comenzi "document.write()" vor fi executate prin apelarea functiei. In exemplul nostru avem trei apelari ale functiei. Putem observa ca am scris "myFunction()" de trei ori imediat sub definitia functiei. Acestea sunt trei apelari ale functiei si au rolul de a face ca functia sa fie executata de trei ori. Rezultatul executiei este:
Bine Acesta Bine Acesta Bine Acesta
ai
venit este ai venit este ai venit este JavaScript!
pe
pe
pe
pagina mea! JavaScript! pagina mea! JavaScript! pagina mea!
5
3. Ierarhii JavaScript organizeaza toate elementele unei pagini web intr-o ierarhie de obiecte. Practic toate elementele sunt vazute ca obiecte. Fiecare obiect are anumite proprietati si metode prin care poate fi manipulat. Cu ajutorul JavaScript putem lucra cu usurinta cu obiectele componente ale unei pagini web. Pentru a putea face acest lucru este foarte importanta intelegerea ierarhiei obiectelor HTML. Vom intelege mai bine mecanismul de functionare printr-un exemplu. Codul urmator este o pagina HTML simpla:
Pagina
mea
s r c =" . . /. . / im a g es / s ea r c h_ l o go . g if " height="85">
Iata o imagine a paginii (am adaugat cateva adnotatii cu culoarea rosie):
Avem doua imagini (sigla si bara de jos), o legatura ("Pagina de inceput") si un formular cu doua campuri text (Nume / E-mail), respectiv un buton (Trimite). Din punctul de vedere al mecanismelor JavaScript, fereastra browserului este un obiect "window". Acest obiect (fereastra browser asimilata si ca fereastra principala) contine unele elemente ca, de exemplu, bara de stare (status bar) din partea cea mai de jos a ferestrei browserului. In interiorul ferestrei principale putem incarca un document (pagina) HTML (sau un fisier de alt tip - ne vom limita pentru moment la fisiere de tip HTML). Aceasta pagina odata incarcata este asadar un obiect document. Aceasta inseamna ca obiectul document este chiar pagina HTML incarcata la un anumit moment in browser. Obiectul document este un obiect foarte important in JavaScript - se foloseste extrem de frecvent. O proprietate a obiectului document este, de exemplu, culoarea de fundal a paginii. Mai important este faptul ca toate obiectele HTML sunt proprietati ale obiectului document. Un obiect HTML este, spre exemplu, o legatura sau un formular, ca in cazul ilustratiei noastre.
7
Urmatoarea imagine
arta ierarhia creata de pagina noastra:
Dorim acum sa obtinem informatii despre obiecte si sa manipulam aceste obiecte.
Pentru a putea face acest lucru trebuie sa putem accesa diferite obiecte in cadrul ierarhiei. Putem vedea numele obiectelor in imaginea de mai sus a ierarhiei. Daca dorim sa adresam prima imagine din pagina HTML trebuie sa ne uitam in ierarhie. Vom incepe intotdeauna cu nivelul cel mai de sus. Primul obiect (nivelul 0) este denumit document . Prima imagine este reprezentata prin images[0] , fiind situata pe nivelul 1 (imediat inferior). Aceasta inseamna ca putem accesa acest obiect particular prin intermediul unui document.images[0]. apel JavaScript cu ajutorul sintaxei: Daca, de exemplu, dorim sa stim ce introduce utilizatorul in al doilea camp din formular, trebuie sa accesam acest obiect. Din nou pornim din varful ierarhiei. Urmarim calea pana la obiectul numit elements[1] specificand toate obiectele intermediare pe masura ce le depasim. Aceasta inseamna ca putem accesa primul element (elements[1]) prin apelul:
document.forms[0].elements[1] Putem afla si ce text a fost introdus? Desigur, insa pentru a sti ce metode si proprietati ofera obiectul, va trebui sa cercetam cu atentie documentatia JavaScript (ne referim atat la documentatia de la Netscape cat si la alte documentii bune aparute pe piata - 3 astfel de documentatii fiind oferite de site-ul Afaceri-Online ca anexa la cartea electronica "Java, JavaScript Profesional" ). Mentionam in cazul exemplului nostru faptul ca in referinte vom putea constata ca un element text are proprietatea value. "Value" este practic textul introdus in elementul text. Putem citi aceasta valoare cu ajutorul urmatoarei linii de cod: name= document.forms[0].elements[1].value;
8
Sirul este inmagazinat in variabila name. Putem de acum incolo sa lucram cu aceasta variabila.
4. Ferestre Cadru (Frames) O intrebare frecventa este cum interactioneaza frame-urile (cadrele) si JavaScript. Mai intai trebuie sa explicam ce sunt frame-urile si la ce pot fi folosite. Fereastra browserului poate fi impartita in mai multe frame-uri (cadre, ferestre). Aceasta inseamna ca un frame reprezinta o parte din suprafata ferestrei browserului. Fiecare cadru (frame) incarca in el un document (de cele mai multe ori de tip HTML). De exemplu putem creea doua cadre astfel: in primul frame putem incarca pagina d e deschidere a site-ului Netscape iar in cel de-al doilea pagina principala a site-ului Microsoft. Desi crearea de frame-uri este o problema HTML, dorim sa descriem in cele ce urmeaza cateva lucruri de baza. Pentru crearea de cadre se folosesc doua taguri: