Partea a 5-a: Bara de stare (statusbar) si intreruperile (timeouts)
Bara de stare (statusbar)
Programele dumneavoastra JavaScript pot scrie pe bara de stare - Aceasta este bara din josul ferestrei dumneavostra de browser. Tot ce aveti de facut este sa dati o valoare-sir lui window.status. Urmatorul exemplu arata doua butoane care pot fi folosite pentru a scrie pe bara de stare iar apoi pentru stergerea acestui text.
Scriptul arata astfel:
<html> <head> <script language="JavaScript"> <!-- hide function statbar(txt) { window.status = txt; } // --> </script> </head> <body> <form> <input type="button" name="look" value="Write!" onClick="statbar('Hi! This is the statusbar!');"> <input type="button" name="erase" value="Erase!" onClick="statbar('');"> </form> </body> </html>Creem un formular cu doua butoane. Ambele butoane apeleaza functia statbar(). Puteti vedea ca apelarea functiei creata de butonul Write! arata astfel:
statbar('Hi! This is the statusbar!');In interiorul parantezelor specificam sirul 'Hi! This is the statusbar!' Aceasra inseamna ca sirul este trimis functiei statbar(). Puteti vedea ca am definit functia statbar() astfel:
function statbar(txt) { window.status = txt; }Ceea ce aduce nou este folosirea txt in interiorul parantezelor apartinand functiei. Aceasta inseamna ca sirul pe care il transmitem ete inmagazinat intr-o variabila txt.
Afisarea textului pe bara de stare poate fi usor utilizata in combinatie cu legaturile hipertext. In loc ca bara de stare sa afiseze locatia web a paginii din link este posibil ca pe bara de stare sa aveti o descriere a paginii urmatoare. Acest link demonstreaza chiar asta - este de ajuns sa pozitionati cursorul deasupra legaturii. Codul pentru acest exemplu arata astfel:
<a href="dontclck.htm" onMouseOver="window.status='Don\'t click me!'; return true;" onMouseOut="window.status='';">link</a>Aici utilizam onMouseOver si onMouseOut pentru a detecta cand pointerul mouseului trece deasupra legaturii (linkului).
Cu ajutorul intreruperilor (sau a unui numarator) puteti lasa computerul sa execute un anumit cod dupa o anumita perioada de timp. Am creeat un buton - daca apasati acest buton o fereastra va aparea dupa 3 secunde:
Scriptul arata astfel:
<script language="JavaScript"> <!-- hide function timer() { setTimeout("alert('Time is up!')", 3000); } // --> </script> ... <form> <input type="button" value="Timer" onClick="timer()"> </form>setTimeout() este o metoda a obiectului window. Aceasta metoda fixeaza intreruperea - v-ati dat deja seama de aceasta. Primul argument este codul JavaScript care va fi executat dupa o anumita perioada de timp. In cazul nostru argumentul este "alert('Time is up!')". Va rog sa observati ca secventa de cod JavaScript trebuie sa fie in interiorul ghilimelelor.
Scroller - Linie text in miscare
Acum ca stiti cum sa scrieti pe bara de stare si stiti cum functioneaza intreruperile o sa vedem cum sunt realizate linilile de text in miscare - scroller-ele. Probabile ca deja sunteti familiarizati cu liniile de text in miscare pe bara de stare.
Ele pot fi vazute peste tot pe Internet. Vom vede cum sa programam un scroller. In afara de aceasta vom incerca sa analizam posibile imbunatatire ale scrollerului de baza.
Scroller-urile sunt destul de usor de implementat. Haideti sa ne gandim cum sa realizam un text in miscare. Trebuie sa scriem un textpe bara de stare. Dupa o perioada foarte scurta trebuie sa scriem acelasi text pe bara de stare - dar trebuie sa il mutam un pic mai la stanga. Daca repetam operaiunile de mai multe ori obtinem un text in miscare.
Trebuie acum sa ne gandim cum putem determina care parte a textului sa fie afisata, deoarece lungimea totala a textului este de regula mai mare dacat bara de stare.
Acest buton va deschide o noua fereastra si va afisa un scroller:
Iata codul sursa - am adauat cateva comentarii:
<html> <head> <script language="JavaScript"> <!-- hide // define the text of the scroller var scrtxt = "This is JavaScript! " + "This is JavaScript! " + "This is JavaScript!"; var length = scrtxt.length; var width = 100; var pos = -(width + 2); function scroll() { // display the text at the right position and set a timeout // move the position one step further pos++; // calculate the text which shall be displayed var scroller = ""; if (pos == length) { pos = -(width + 2); } // if the text hasn't reached the left side yet we have to // add some spaces - otherwise we have to cut of the first // part of the text (which moved already across the left border if (pos < 0) { for (var i = 1; i <= Math.abs(pos); i++) { scroller = scroller + " ";} scroller = scroller + scrtxt.substring(0, width - i + 1); } else { scroller = scroller + scrtxt.substring(pos, width + pos); } // assign the text to the statusbar window.status = scroller; // call this function again after 100 milliseconds setTimeout("scroll()", 100); } // --> </script> </head> <body onLoad="scroll()"> Your HTML-page goes here. </body> </html>Partea centrala a functiei scroll() este necesara pentru calcularea exacta a carei parti a textului este afisata. Nu voi explica codul in detaliu - trebuie doar sa intelegeti cum functioneaza scrollerele in general.
©1996,1997 by Stefan Koch
e-mail:skoch@rumms.uni-mannheim.de
http://rummelplatz.uni-mannheim.de/~skoch/
My JavaScript-book