Programowanie w Javie

Transkrypt

Programowanie w Javie
Wykład 4:
Język JavaScript:
1.
2.
3.
4.
5.
Zastosowanie
Metody osadzanie skryptu JS w dokumencie HTML
Składnia języka
Funkcje. Obiekty. Zdarzenia.
DOM
JavaScript
• skryptowy język programowania
• interpretowany a nie kompilowany
• w JS nie piszemy samodzielnych programów, a jedynie
programy, które można umieścić w dokumencie HTML.
Programy w JS są uruchamiane przy otwieraniu dokumentu
HTML w przeglądarce
• JS to nie jest uproszczoną wersja Javy. Są to dwa różne języki.
Ale jest dużo podobieństw: składnia i nazwy obiektów
bibliotecznych
• JS jest zorientowany obiektowo, ale nie wspiera w pełni
obiektowości jak Java (nie ma np. mechanizmu dziedziczenia).
Opiera się na predefiniowanych obiektach.
• JS został opracowany przez Netscape Communications
Corporation (twórcę przeglądarki Netscape, teraz Mozilla
Firefox), rok 1995.
Zastosowanie JS:
"ożywienie" strony internetowej
Za pomocą programów (skryptów) JS możemy tworzyć m.in.:
– interakcję z użytkownikiem poprzez obsługę zdarzeń: np.
• najechanie myszką na element strony powoduje wyświetlenie
komunikatu
• wysuwane menu po kliknięciu lub najechaniu myszką
• obsługa pokazu slajdów lub wyświetlanie automatyczne
• sprawdzać poprawność wypełnienia formularzy, czy np. zostały
wypełnione wszystkie pola
– dynamiczne treści na stronie: np. zegar z bieżącym czasem,
automatycznie aktualizowany
– efektowne wyświetlanie galerii zdjęć
– modyfikować część strony bez potrzeby przeładowania całej strony
(np. uzupełnienie wyszukiwanej frazy) - technologia AJAX (przyszły
semestr)
JavaScript czyli programowanie po stronie klienta
•
•
•
skrypty JS osadzamy (umieszczamy, wstawiamy) w kodzie HTML
przeglądarki www posiadają interpretery JS i to przeglądarka wykonuje
kod JS, a nie serwer
jedyne zadanie serwera: odesłać do przeglądarki dokument HTML
Mówimy więc, że skrypty JS wykonują się po stronie klienta (w przeglądarce).
Albo mówimy o programowaniu po stronie klienta, ponieważ piszemy
program, który będzie wykonywany po stronie klienta (w przeglądarce).
Programowanie po stronie serwera (czyli programy będą wykonywane na
serwerze) - przyszły semestr.
Metody osadzania JS w kodzie HTML
•
w nagłówku (head) lub w ciele (body) dokumentu HTML w elemencie script
<script>
document.write("Trwa wykład z JavaScriptu");
</script>
•
poprzez zewnętrzny plik (import pliku):
Skrypt zapisujemy w oddzielnym pliku z rozszerzeniem .js
Następnie dołączamy go do dokumentu HTML wpisując w nagłówku (head):
<script src="adres_url_pliku_js"></script>
•
jako obsługę zdarzenia:
Skrypt wpisujemy w znaczniku jako wartość atrybutu będącego nazwą
zdarzenia
<h1 onclick="alert('Trwa wykład z Javascriptu');">
Kliknij, aby zobaczyć komunikat.
</h1>
Przykłady: OsadzanieJS*.html
Kolejność wykonania skryptów
Najpierw skrypt osadzony w nagłówku dokumentu
Następnie skrypt osadzony w ciele dokumentu
Jeśli jest więcej niż jeden skrypt w nagłówku lub ciele to będą
wykonane w kolejności osadzenia.
Zaś skrypt dodany jako obsługa zdarzenia zostanie wykonany, gdy
zdarzenie nastąpi np. gdy klikniemy myszką
Przykłady: Kolejnosc.html
Jak radzić sobie z błędami
Do debugowania można wykorzystać:
• przeglądarkę Firefox:
włączamy Firebug a w nim zakładkę "Konsola"
• przeglądarkę Chrome:
włączamy DevTools a w nim zakładkę
"Konsola"
Uruchamianie skryptu w konsoli
Wygodny sposób, aby np. sprawdzić co robi dane polecenie lub
przypomnieć składnię:
1. Włączamy Firebug-a i wybieramy zakładkę "Konsola"
2. Po prawej stronie wpisujemy instrukcje JS
3. Naciskamy "Uruchom". Jeśli są jakieś błędy pokażą się po lewej stronie
Jak zobaczyć jaki został wygenerowany kod HTML
1.
2.
3.
4.
5.
Otwieramy przykład: Generowany.html
Mamy listę punktowaną.
Kod HTML tej listy został wygenerowany przez skrypt JS
Ale jak włączymy źródło tej strony (CTRL-U) to nie pokaże się kod HTML
listy punktowanej
Aby zobaczyć ten kod należy zaznaczyć listę z miastami i z menu
kontekstowego (prawy przycisk myszy) wybrać
 Firefox: "Pokaż źródło"
 Chrome: "Zbadaj element"
W ten sposób można sprawdzić czy został wygenerowany właściwy kod tzn.
zgodny z tym jak tworzy się listy w HTML
Elementy języka JS - typy danych
• liczbowe: typ całkowity, typ zmiennoprzecinkowy
• logiczne
• napisy (String), tworzymy za pomocą " lub '
Oba sposoby są dobre:
"jakiś tekst"
'jakiś tekst'
• tablice (tablice są obiektami)
• obiekty
Elementy języka JS - zmienne
• Nie trzeba podawać typu zmiennej
• Tej samej zmiennej możemy przypisywać wartości różnych
typów (mówimy, że JS jest typowany dynamicznie)
• Deklaracja zmiennej bez inicjalizacji:
var nazwa_zmiennej;
• Deklaracja zmiennej z inicjalizacją. Można pominąć słowo var:
nazwa_zmiennej = wartosc;
Elementy języka JS
Tak samo jak w Javie:
• komentarze
• instrukcje sterujące: if, for, while, do while, switch, break, continue
• operatory: arytmetyczne, przypisania, konkatenacji (łączenia) napisów,
operator warunkowy, logiczne, bitowe
Operatory porównania:
== (prawda, gdy są równe wartości)
=== (prawda, gdy są równe wartości i typy)
Przykład:
x=1;y="1";
x == y - prawda
x === y - fałsz
Przykład: TypyDanychZmienne.html
Metoda write
•
•
•
Metoda wypisuje w dokumencie HTML tekst podany jako argument
Jest metodą predefiniowanego obiektu document
Odwołanie do metody tak jak w Javie czyli za pomocą operatora kropka:
document.write()
•
Argument można podać tak:
document.write("Słowo 'write' znaczy po polsku pisać");
document.write('Słowo "write" znaczy po polsku pisać');
Ale tak jest źle:
document.write("Słowo "write" znaczy po polsku pisać");
Chyba, że chronimy znak:
document.write("Słowo \"write\" znaczy po polsku pisać");
Powyższe można stosować też do innych metod, np. alert(), prompt()
Łączenie napisów: operator +
Uwaga: jeśli wywołamy metodę write po załadowaniu dokumentu to
dotychczasowa zawartość dokumentu zostanie nadpisana
Przykład: Nadpisanie.html
Metoda alert. Metoda prompt.
•
•
•
•
alert wyświetla okno dialogowe z komunikatem
prompt wyświetla okno dialogowe, w którym można wprowadzić dane
jako argument można podać napis. Pokaże się on w oknie dialogowym.
obie metody zatrzymują wykonanie skryptu. Wykonywanie skrypt jest
kontynuowane po naciśnięciu OK lub Anuluj
Przykład: AlertPrompt.html
Funkcje
Definiowanie i wywoływanie funkcji zobacz przykład: Funkcje.html
Obiekty
JavaScript – język zorientowany obiektowo.
Trzy rodzaje obiektów:
– wbudowane (Array, String, Math, Date, RegExp)
– obiekty DOM reprezentujące okno przeglądarki i
elementy dokumentu HTML
– zdefiniowane przez użytkownika
Tablice (obiekt Array)
Przykłady: Tablice.html
Pole:
length rozmiar tablicy
Metody:
reverse() odwraca kolejność elementów tablicy
join() łączenie elementów tablicy w napis
sort() sortowanie tablicy alfabetycznie
shift() usuwa i zwraca pierwszy element tablicy
pop() usuwa i zwraca ostatni element tablicy
Więcej o metodach : http://www.w3schools.com/jsref/jsref_obj_array.asp
Napisy (obiekt String)
•
utworzenie obiektu typu String i przypisanie go zmiennej, trzy
równoważne instrukcje:
tekst = "Trwa wykład";
tekst = 'Trwa wykład';
tekst = new String("Trwa wykład");
•
String można obsługiwać jak tablicę znaków, tak jak w C, nie tak jak w Javie
Metody obiektu String:
split()
podzielenie napisu względem separatora i zapisanie w
tablicy
indexOf()
wyszukanie tekstu. Zwraca indeks znaku pierwszego
wystąpienia podanego argumentu
fromCharCode() zwraca znak na podstawie numeru Unicode
Przykłady: Napisy.html
Więcej: http://www.w3schools.com/jsref/jsref_obj_string.asp
Obiekt Math
pola:
• Math.PI – liczba π: 3,14
• Math.E – liczba E: 2,71
metody:
• Math.floor(x) - zaokrąglenie do dołu
• Math.random() - liczba losowa z przedziału [0,1)
• Math.sqrt(x) -pierwiastek kwadratowy z "x"
Przykład: Math.html
Więcej na:
http://www.w3schools.com/jsref/jsref_obj_math.asp
Obiekt Date
new Date() – tworzy obiekt z bieżącą datą i godziną (czas systemowy
użytkownika, nie serwera)
new Date(2014,9,1) – tworzy obiekt ze wskazaną datą, kolejne argumenty
wskazują rok, miesiąc (styczeń to 0) i dzień itd., jeśli nie podana godzina
domyślnie jest północ. W tym przykładzie będzie data 1.10.2014
Domyślnie data jest wyświetlana w formacie:
Wed Oct 01 2014 00:00:00 GMT+0200
Datę można wyświetlić w przyjaźniejszy sposób korzystając z metod:
getDate() – zwraca dzień miesiąca (od 1 do 31)
getMonth() - zwraca numer miesiąca (od 0 do 11, 0 to styczeń)
getDay() – zwraca dzień tygodnia (od 0 do 6, 0 to niedziela)
getTime() - zwraca liczbę milisekund, które upłynęły od 1.01.1970
Przykład: Date.html
Więcej metod: http://www.w3schools.com/jsref/jsref_obj_date.asp
DOM (Document Object Model)
Obiektowy model dokumentu
•
DOM jest sposobem reprezentacji dokumentu HTML, który polega na tym,
że każdy element strony jest reprezentowany przez obiekt. W polach
obiektu są zapisane właściwości tego elementu.
Np. obiekt reprezentujący element img będzie miał pole src, w którym
będzie zapisana wartość atrybutu src
•
DOM dla konkretnego dokumentu jest tworzony przez przeglądarkę po
załadowaniu tego dokumentu. Mogą być różnice między DOM-em
utworzonym przez Firefox, a DOM-em utworzonym przez np. Chrome
•
Hierarchia obiektów DOM (czyli relacja rodzic - dziecko) jest taka jak
zagnieżdżenie elementów na stronie.
Graficzne przedstawienie DOM dla przykładowego dokumentu
document
head
body
h1
p
DOM - każdy element dokumentu HTML to obiekt
<!DOCTYPE html>
<html>
<head></head>
<body>
<h1>Podstawy JavaScriptu</h1>
<p>
JavaScript jest to język ...
</p>
</body>
</html>
DOM (Document Object Model)
Obiektowy model dokumentu
•
Gdy modyfikujemy pole obiektu DOM to następuje modyfikacja elementu
strony HTML, który reprezentowany jest przez ten obiekt.
•
JS umożliwia modyfikację obiektów DOM .
Np. możemy za pomocą odpowiedniej metody JS zmodyfikować pole src
obiektu DOM reprezentującego obrazek, a przez to obrazek na stronie
zmieni się na inny.
•
Uwaga: JavaScript  DOM. JS jest jednym z języków, które umożliwia
odwoływanie się do obiektów DOM.
Inny język skryptowy, który umożliwia odwoływanie się do DOM to
VBScript.
DOM - przykład
Przykład: DostepDoDOMPrzyklad.html
•
getElementById() - metoda obiektu JS document, która zwraca obiekt
DOM reprezentujący element strony HTML o podanym atrybucie id".
Aby skorzystać z tej metody element musi mieć nadany atrybut "id".
•
innerHTML - pole, w którym jest zapisana zawartość danego elementu
(czyli zawartość danego znacznika).
•
style - pole, w którym są zapisane deklaracje stylu dla danego elementu
•
src - pole, w którym jest zapisana wartość atrybutu src
Zdarzenia
•
Zdarzenia: kliknięcie myszką, najechanie myszką, naciśnięcie klawisza itp.
Dzisiaj tylko kliknięcie myszką, inne zdarzenia następny wykład
•
Dla elementu strony możemy dodać skrypt (mówimy: dodać obsługę
zdarzenia), który zostanie wykonany, gdy zdarzenie będzie miało miejsce.
Jak dodać obsługę zdarzenia, różne sposoby:
Przykład: ObslugaZdarzenia.html
Obiekt JS document
Metody:
• write() - wpisanie tekstu do dokumentu HTML
• getElementById() - zwraca obiekt reprezentujący element strony o
podanym atrybucie id
• getElementsByClassName(), getElementsByTagName() - zwraca tablicę
obiektów reprezentujące elementy, odpowiednio o podanym atrybucie
class lub znaczniku (tagu)
Pola:
• lastModified - data ostatniej modyfikacji dokumentu HTML (data ostatniej
modyfikacji pliku)
• images - tablica obiektów reprezentujących wszystkim obrazki w
dokumencie HTML. Kolejność obiektów w tablicy jest taka jak obrazków na
stronie
Więcej: http://www.w3schools.com/jsref/dom_obj_document.asp
Obiekt JS window
•
Za pomocą obiektu JS window odwołujemy się do okna przeglądarki.
Pola, m.in:
• document – bieżący dokument
• innerWidth, innerHeight - szerkość / wysokość okna przeglądarki nie licząc
paska menu i paska przewijania
• location - zobacz następny slajd
Metody, m.in:
• alert(), prompt() – opis metod zobacz slajd "Metoda alert ..."
• open() - otwarcie nowego okna przeglądarki
Więcej: http://www.w3schools.com/jsref/obj_window.asp
Uwaga: Gdy odwołujemy się do bieżącego dokumentu nie trzeba pisać:
window.document, window.alert, window.prompt itd.
Można bez "window."
Obiekt location
Obiekt location jest polem obiektu window. W obiekcie location są zapisane
dane związane z adresem URL strony.
Pola:
•
href – adres URL strony
Jak zrobić przekierowanie na nową stronę:
location.href="http://www.uwb.lt"
Przykład: Przekierowanie.html
Metody:
•
reload() – przeładowanie strony (odpowiednik odśwież)
Więcej: http://www.w3schools.com/jsref/obj_location.asp
Opóźnienie wykonania instrukcji (czas bezczynności)
Metody obiektu window:
• setTimeout(instrukcje,opóźnienie) - opóźnienie wykonania instrukcji
opóźnienie podaje się w milisekundach.
• clearTimeout(identyfikator_opóznienia) - wyzerowanie czasu bezczynności
(przerwanie odliczania czasu, instrukcja, która miała się wykonać po
odliczeniu czasu nie wykona się)
Przykłady:
Opoznienie.html
OpoznienieCzasPobytu.html
Uwaga:
Wywołanie metody setTimeout() nie zatrzymuje dalszego wykonania skryptu,
tak jak np. metoda alert lub prompt
Dodatkowe informacje
Funkcje. Zmienna z "var" czy bez. Funkcja anonimowa.
Przykłady: Funkcje.html
Zmienna z "var" czy bez:
Przykład: ZasiegZmiennychVar.html
Funkcja anonimowa (funkcja bez nazwy).
Zastosowanie: zobacz Slad "Zdarzenia" i przykład ObslugaZdarzenia.html
Obiekt RegExp (wyrażenia regularne)
Obiekt RegExp umożliwia wyszukiwanie podając wzorzec wyszukiwania za
pomocą wyrażenia regularnego
• składnia:
/wzorzec/modyfikator
Przykład: /a+/i
a+ (wyszukiwanie przynajmniej jednego wystąpienia znaku a)
i (wielkość liter nie ma znaczenie)
• utworzenie obiektu RegExp:
obiekt = new RegExp("/a+/i");
•
wywołujemy metodę test() obiektu RegExp podając jako argument tekst,
który ma być przeszukany:
zwróci ona true jeśli wzorzec zostanie odnaleziony, false w przeciwnym
razie.
Przykład. Sprawdź czy zaproponowane hasło zawiera cyfry
Regularne.html