okladka

Kompendium wiedzy na temat języka JavaScript

  • Model DOM i programowanie obiektowe
  • Tworzenie dynamicznych interfejsów użytkownika
  • Mechanizmy komunikacji klient-serwer

JavaScript to język programowania interpretowany po stronie przeglądarki i wykorzystywany do tworzenia elementów stron WWW. Opracowany w firmie Netscape, początkowo służył wyłącznie do weryfikowania poprawności danych wprowadzanych w formularzach. Dziś ma znacznie szersze zastosowania. Przede wszystkim pozwala wzbogacić stronę WWW o elementy niedostępne w "czystym" HTML, a jego najnowsze wersje umożliwiają korzystanie z dokumentów XML oraz komunikację z usługami sieciowymi. Z tego względu JavaScript jest niemal nieodłącznym elementem nowoczesnej witryny internetowej.

Książka "JavaScript dla webmasterów. Zaawansowane programowanie" to podręcznik opisujący wszystkie możliwości języka JavaScript. Przedstawia jego historię i pokazuje, jak rozwiązywać problemy, przed którymi często stają twórcy witryn i aplikacji WWW. W książce opisano kluczowe elementy języka, takie jak zdarzenia, wyrażenia regularne oraz metody identyfikacji przeglądarki WWW i interakcji z nią, umożliwiające tworzenie dynamicznych interfejsów użytkownika. Scharakteryzowano sposoby rozszerzania języka JavaScript oraz techniki budowania mechanizmów komunikacji między klientem i serwerem bez używania elementów pośredniczących.

  • Podstawowe elementy ECMAScript
  • Zasady programowania obiektowego
  • Osadzanie elementów JavaScript w kodzie strony WWW
  • Hierarchia modelu DOM
  • Korzystanie z wyrażeń regularnych
  • Detekcja typu przeglądarki i systemu operacyjnego
  • Obsługa zdarzeń
  • Kontrola poprawności danych z formularzy
  • Wykorzystywanie elementów języka XML
  • Komunikacja między przeglądarką i serwerem oraz usługi sieciowe
  • Bezpieczeństwo aplikacji JavaScript

Jeśli chcesz, aby Twoje aplikacje WWW działały szybciej,
skorzystaj z możliwości JavaScript.


2 O autorze (15)
2 Wstęp (17)
Rozdział 1. Czym jest JavaScript? (23)
  • Krótka historia (24)
  • Implementacje JavaScriptu (25)
    • ECMAScript (25)
    • Model DOM (28)
    • Model BOM (31)
  • Podsumowanie (32)
Rozdział 2. Podstawy ECMAScriptu (33)
  • Składnia (33)
  • Zmienne (34)
  • Słowa kluczowe (37)
  • Słowa zarezerwowane (37)
  • Wartości proste i referencje (37)
  • Typy proste (38)
    • Operator typeof (39)
    • Typ Undefined (39)
    • Typ Null (40)
    • Typ Boolean (40)
    • Typ Number (41)
    • Typ String (43)
  • Konwersje (44)
    • Konwersja na ciąg znakowy (44)
    • Konwersja na liczbę (45)
    • Rzutowanie typów (46)
  • Typy referencyjne (48)
    • Klasa Object (48)
    • Klasa Boolean (49)
    • Klasa Number (50)
    • Klasa String (51)
    • Operator instanceof (55)
  • Operatory (55)
    • Operatory jednoargumentowe (55)
    • Operatory bitowe (59)
    • Operatory logiczne (65)
    • Operatory multiplikatywne (69)
    • Operatory addytywne (70)
    • Operatory porównujące (72)
    • Operatory równości (73)
    • Operator warunkowy (75)
    • Operatory przypisania (75)
    • Przecinek (76)
  • Instrukcje (76)
    • Instrukcja if (76)
    • Instrukcje iteracyjne (77)
    • Etykietowanie instrukcji (79)
    • Instrukcje break i continue (79)
    • Instrukcja with (80)
    • Instrukcja switch (81)
  • Funkcje (82)
    • Nie przeładowywać! (84)
    • Obiekt arguments (84)
    • Klasa Function (85)
    • Zamknięcia (87)
  • Podsumowanie (88)
Rozdział 3. Podstawy programowania obiektowego (91)
  • Terminologia obiektowa (91)
    • Wymogi języków obiektowych (92)
    • Składniki obiektu (92)
  • Posługiwanie się obiektami (92)
    • Deklaracja i tworzenie egzemplarzy (93)
    • Referencje do obiektu (93)
    • Usuwanie referencji do obiektu (93)
    • Wiązanie wczesne a wiązanie późne (94)
  • Typy obiektów (94)
    • Obiekty własne (94)
    • Obiekty wewnętrzne (105)
    • Obiekty hosta (111)
  • Zakres (112)
    • Publiczny, prywatny i chroniony (112)
    • Statyczny nie jest statyczny (112)
    • Słowo kluczowe this (113)
  • Definiowanie klas i obiektów (114)
    • Wzorzec fabryki (114)
    • Wzorzec konstruktora (116)
    • Wzorzec prototypu (117)
    • Hybrydowy wzorzec konstruktor-prototyp (118)
    • Metoda dynamicznego prototypu (119)
    • Hybrydowy wzorzec fabryki (120)
    • Którego wzorca używać? (121)
    • Praktyczny przykład (121)
  • Modyfikowanie obiektów (123)
    • Tworzenie nowej metody (124)
    • Redefiniowanie istniejących metod (125)
    • Bardzo późne wiązanie (126)
  • Podsumowanie (126)
Rozdział 4. Dziedziczenie (129)
  • Dziedziczenie w praktyce (129)
  • Implementacja dziedziczenia (130)
    • Sposoby dziedziczenia (131)
    • Bardziej praktyczny przykład (137)
  • Alternatywne wzorce dziedziczenia (142)
    • zInherit (142)
    • xbObject (146)
  • Podsumowanie (150)
Rozdział 5. JavaScript w przeglądarce (151)
  • JavaScript w kodzie HTML (151)
    • Znacznik <script/> (151)
    • Format plików zewnętrznych (152)
    • Kod osadzony a pliki zewnętrzne (153)
    • Umiejscowienie znaczników (154)
    • Ukrywać albo nie ukrywać (155)
    • Znacznik <noscript/> (156)
    • Zmiany w XHTML (157)
  • JavaScript w SVG (159)
    • Podstawy SVG (159)
    • Znacznik <script/> w SVG (161)
    • Umiejscowienie znaczników <script/> w SVG (161)
  • Obiektowy model przeglądarki (162)
    • Obiekt window (162)
    • Obiekt document (174)
    • Obiekt location (178)
    • Obiekt navigator (180)
    • Obiekt screen (182)
  • Podsumowanie (182)
Rozdział 6. Podstawy modelu DOM (183)
  • Co to jest DOM? (183)
    • Wprowadzenie do XML (183)
    • Interfejs API dla XML (187)
    • Hierarchia węzłów (187)
    • Modele DOM w konkretnych językach (190)
  • Obsługa modelu DOM (191)
  • Korzystanie z modelu DOM (191)
    • Dostęp do węzłów dokumentu (191)
    • Sprawdzanie typu węzła (193)
    • Postępowanie z atrybutami (193)
    • Dostęp do konkretnych węzłów (195)
    • Tworzenie węzłów i manipulowanie nimi (197)
  • Elementy funkcjonalne HTML w modelu DOM (202)
    • Atrybuty jako właściwości (203)
    • Metody do pracy z tabelami (203)
  • Przemierzanie w modelu DOM (206)
    • Obiekt NodeIterator (206)
    • TreeWalker (211)
  • Wykrywanie zgodności z modelem DOM (213)
  • Poziom 3 modelu DOM (215)
  • Podsumowanie (215)
Rozdział 7. Wyrażenia regularne (217)
  • Obsługa wyrażeń regularnych (217)
    • Korzystanie z obiektu RegExp (218)
    • Wyrażenia regularne w standardowych metodach typu String (219)
  • Proste wzorce (221)
    • Metaznaki (221)
    • Używanie znaków specjalnych (221)
    • Klasy znaków (222)
    • Kwantyfikatory (225)
  • Złożone wzorce (229)
    • Grupowanie (229)
    • Referencje wsteczne (230)
    • Przemienność (231)
    • Grupy nieprzechwytujące (233)
    • Wyprzedzenia (234)
    • Granice (235)
    • Tryb wielowierszowy (236)
  • Istota obiektu RegExp (237)
    • Właściwości egzemplarzy (237)
    • Właściwości statyczne (238)
  • Typowe wzorce (240)
    • Kontrola poprawności dat (240)
    • Kontrola poprawności danych karty kredytowej (242)
    • Kontrola poprawności adresu e-mail (246)
  • Podsumowanie (247)
Rozdział 8. Wykrywanie przeglądarki i systemu operacyjnego (249)
  • Obiekt navigator (249)
  • Metody wykrywania przeglądarki (250)
    • Wykrywanie obiektów/możliwości (250)
    • Wykrywanie na podstawie ciągu User-Agent (251)
  • (Niezbyt) krótka historia ciągu User-Agent (251)
    • Netscape Navigator 3.0 i Internet Explorer 3.0 (252)
    • Netscape Communicator 4.0 i Internet Explorer 4.0 (253)
    • Internet Explorer 5.0 i nowsze wersje (254)
    • Mozilla (254)
    • Opera (256)
    • Safari (257)
    • Epilog (258)
  • Skrypt wykrywający przeglądarkę (258)
    • Metodyka (258)
    • Pierwsze kroki (259)
    • Wykrywanie przeglądarki Opera (261)
    • Wykrywanie przeglądarek Konqueror i Safari (263)
    • Wykrywanie przeglądarki Internet Explorer (266)
    • Wykrywanie przeglądarki Mozilla (267)
    • Wykrywanie przeglądarki Netscape Communicator 4.x (268)
  • Skrypt wykrywający platformę i system operacyjny (269)
    • Metodyka (269)
    • Pierwsze kroki (269)
    • Wykrywanie systemów operacyjnych Windows (270)
    • Wykrywanie systemów operacyjnych dla platformy Macintosh (272)
    • Wykrywanie uniksowych systemów operacyjnych (273)
  • Pełny skrypt (274)
  • Przykład - strona logowania (277)
  • Podsumowanie (282)
Rozdział 9. Wszystko o zdarzeniach (285)
  • Zdarzenia dzisiaj (285)
  • Przepływ zdarzenia (286)
    • Rozprzestrzenianie się zdarzeń (286)
    • Przechwytywanie zdarzeń (288)
    • Przepływ zdarzenia w modelu DOM (289)
  • Procedury obsługi zdarzeń i słuchacze zdarzeń (290)
    • Internet Explorer (291)
    • DOM (292)
  • Obiekt Event (294)
    • Lokalizacja (294)
    • Właściwości i metody (295)
    • Podobieństwa (298)
    • Różnice (301)
  • Typy zdarzeń (304)
    • Zdarzenia myszki (304)
    • Zdarzenia klawiatury (309)
    • Zdarzenia HTML (311)
    • Zdarzenia mutacji (317)
  • Zdarzenia wspólne dla wielu przeglądarek (317)
    • Obiekt EventUtil (317)
    • Dodawanie/usuwanie procedur obsługi błędów (318)
    • Formatowanie obiektu event (320)
    • Pobieranie obiektu zdarzenia (324)
    • Przykład (325)
  • Podsumowanie (326)
Rozdział 10. Zaawansowane techniki DOM (329)
  • Skrypty definiujące style (329)
    • Metody modelu DOM przetwarzające style (331)
    • Własne podpowiedzi (333)
    • Sekcje rozwijalne (334)
    • Dostęp do arkuszy stylów (335)
    • Style obliczane (339)
  • innerText i innerHTML (341)
  • outerText i outerHTML (342)
  • Zakresy (344)
    • Zakresy w modelu DOM (344)
    • Zakresy w Internet Explorerze (355)
    • Czy zakresy są praktyczne? (359)
  • Podsumowanie (360)
Rozdział 11. Formularze i integralność danych (361)
  • Podstawowe informacje na temat formularzy (361)
  • Oprogramowywanie elementu <form/> (363)
    • Odczytywanie odwołań do formularza (363)
    • Dostęp do pól formularza (364)
    • Wspólne cechy pól formularzy (364)
    • Ustawienie aktywności na pierwszym polu (365)
    • Zatwierdzanie formularzy (366)
    • Jednokrotne zatwierdzanie formularza (368)
    • Resetowanie formularzy (368)
  • Pola tekstowe (369)
    • Odczytywanie i zmiana wartości pola tekstowego (369)
    • Zaznaczanie tekstu (371)
    • Zdarzenia pól tekstowych (372)
    • Automatyczne zaznaczanie tekstu (372)
    • Automatyczne przechodzenie do następnego pola (373)
    • Ograniczanie liczby znaków w polu wielowierszowym (374)
    • Umożliwianie i blokowanie wpisywania znaków w polach tekstowych (376)
    • Liczbowe pola tekstowe reagujące na klawisze strzałek w górę i w dół (382)
  • Pola list i listy rozwijane (384)
    • Uzyskiwanie dostępu do opcji (385)
    • Odczytywanie i zmiana wybranych opcji (385)
    • Dodawanie opcji (386)
    • Usuwanie opcji (388)
    • Przenoszenie opcji (388)
    • Zmiana kolejności opcji (389)
  • Tworzenie pola tekstowego z automatyczną podpowiedzią (390)
    • Dopasowywanie (390)
    • Główny mechanizm (391)
  • Podsumowanie (393)
Rozdział 12. Sortowanie tabel (395)
  • Punkt wyjścia: tablice (395)
    • Metoda reverse() (397)
  • Sortowanie tabeli zawierającej jedną kolumnę (397)
    • Funkcja porównania (399)
    • Funkcja sortTable() (399)
  • Sortowanie tabel zawierających więcej niż jedną kolumnę (401)
    • Generator funkcji porównania (402)
    • Zmodyfikowana funkcja sortTable() (403)
    • Sortowanie w porządku malejącym (404)
    • Sortowanie danych innych typów (406)
    • Sortowanie zaawansowane (410)
  • Podsumowanie (414)
Rozdział 13. Technika "przeciągnij i upuść" (415)
  • Systemowa technika "przeciągnij i upuść" (415)
    • Zdarzenia techniki "przeciągnij i upuść" (416)
    • Obiekt dataTransfer (422)
    • Metoda dragDrop() (426)
    • Zalety i wady (428)
  • Symulacja techniki "przeciągnij i upuść" (429)
    • Kod (430)
    • Tworzenie docelowych obiektów przeciągania (432)
    • Zalety i wady (434)
  • zDragDrop (435)
    • Tworzenie elementu, który można przeciągać (435)
    • Tworzenie docelowego obiektu przeciągania (436)
    • Zdarzenia (436)
    • Przykład (437)
  • Podsumowanie (439)
Rozdział 14. Obsługa błędów (441)
  • Znaczenie obsługi błędów (441)
  • Błędy i wyjątki (442)
  • Raportowanie błędów (443)
    • Internet Explorer (Windows) (443)
    • Internet Explorer (Mac OS) (445)
    • Mozilla (wszystkie platformy) (446)
    • Safari (Mac OS X) (446)
    • Opera 7 (wszystkie platformy) (448)
  • Obsługa błędów (449)
    • Procedura obsługi zdarzenia onerror (449)
    • Instrukcja try...catch (452)
  • Techniki debugowania (458)
    • Używanie komunikatów (458)
    • Używanie konsoli Javy (459)
    • Wysyłanie komunikatów do konsoli JavaScriptu (tylko Opera 7+) (460)
    • Rzucanie własnych wyjątków (460)
    • Narzędzie The JavaScript Verifier (462)
  • Debugery (462)
    • Microsoft Script Debugger (462)
    • Venkman - debuger dla Mozilli (465)
  • Podsumowanie (474)
Rozdział 15. JavaScript i XML (475)
  • Obsługa XML DOM w przeglądarkach (475)
    • Obsługa XML DOM w Internet Explorerze (475)
    • Obsługa XML DOM w Mozilli (480)
    • Ujednolicenie implementacji (485)
  • Obsługa XPath w przeglądarkach (496)
    • Wprowadzenie do XPath (496)
    • Obsługa XPath w Internet Explorerze (497)
    • Obsługa XPath w Mozilli (498)
  • Obsługa XSLT w przeglądarkach (503)
    • Obsługa XSLT w Internet Explorerze (505)
    • Obsługa XSLT w Mozilli (509)
  • Podsumowanie (511)
Rozdział 16. Komunikacja między klientem a serwerem (513)
  • Pliki cookies (513)
    • Składniki plików cookies (514)
    • Inne ograniczenia bezpieczeństwa (515)
    • Cookies w języku JavaScript (515)
    • Cookies na serwerze (517)
    • Przekazywanie cookies między klientem a serwerem (521)
  • Ukryte ramki (523)
    • Używanie ramek iframe (524)
  • Żądania HTTP (526)
    • Używanie nagłówków (528)
    • Bliźniacze implementacje obiektu XML HTTP (529)
    • Wykonywanie żądania GET (530)
    • Wykonywanie żądania POST (531)
  • Żądania LiveConnect (532)
    • Wykonywanie żądania GET (532)
    • Wykonywanie żądania POST (534)
  • Inteligentne żądania HTTP (536)
    • Metoda get() (536)
    • Metoda post() (539)
  • Zastosowania praktyczne (540)
  • Podsumowanie (540)
Rozdział 17. Usługi sieciowe (543)
  • Podstawowe informacje na temat usług sieciowych (543)
    • Czym jest usługa sieciowa? (543)
    • WSDL (544)
  • Usługi sieciowe w Internet Explorerze (547)
    • Używanie komponentu WebService (547)
    • Przykład użycia komponentu WebService (549)
  • Usługi sieciowe w Mozilli (551)
    • Rozszerzone uprawnienia (551)
    • Używanie metod SOAP (552)
    • Używanie obiektów proxy WSDL (556)
  • Rozwiązanie dla różnych przeglądarek (560)
    • Obiekt WebService (560)
    • Usługa Temperature Service (562)
    • Używanie obiektu TemperatureService (564)
  • Podsumowanie (565)
Rozdział 18. Praca z modułami rozszerzającymi (567)
  • Do czego służą moduły rozszerzające? (567)
  • Popularne moduły rozszerzające (568)
  • Typy MIME (569)
  • Osadzanie modułów rozszerzających (570)
    • Dołączanie parametrów (571)
    • Netscape 4.x (571)
  • Wykrywanie modułów rozszerzających (572)
    • Wykrywanie modułów rozszerzających w stylu Netscape (572)
    • Wykrywanie modułów rozszerzających ActiveX (577)
    • Wykrywanie modułów rozszerzających w różnych przeglądarkach (579)
  • Aplety Java (580)
    • Osadzanie apletów (580)
    • Odwołania do apletów w kodzie JavaScript (581)
    • Tworzenie apletów (582)
    • Komunikacja skryptu JavaScript z językiem Java (583)
    • Komunikacja języka Java ze skryptem JavaScript (586)
  • Filmy Flash (589)
    • Osadzanie filmów Flash (590)
    • Odwołania do filmów Flash (590)
    • Komunikacja języka JavaScript z filmami Flash (591)
    • Komunikacja Flasha z językiem JavaScript (594)
  • Kontrolki ActiveX (596)
  • Podsumowanie (599)
Rozdział 19. Zagadnienia związane z wdrażaniem aplikacji JavaScriptu (601)
  • Bezpieczeństwo (601)
    • Polityka jednakowego pochodzenia (602)
    • Zagadnienia związane z obiektem okna (603)
    • Zagadnienia dotyczące przeglądarki Mozilla (604)
    • Ograniczenia zasobów (607)
  • Zagadnienia dotyczące lokalizacji (608)
    • Sprawdzanie języka w kodzie JavaScript (608)
    • Strategie umiędzynaradawiania (609)
    • Zagadnienia dotyczące ciągów znaków (610)
  • Optymalizacja kodu JavaScript (613)
    • Czas pobierania (613)
    • Czas wykonania (619)
  • Zagadnienia dotyczące własności intelektualnej (635)
    • Obfuskacja (635)
    • Microsoft Script Encoder (wyłącznie Internet Explorer) (636)
  • Podsumowanie (637)
Rozdział 20. Rozwój języka JavaScript (639)
  • ECMAScript 4 (639)
    • Propozycja firmy Netscape (640)
    • Implementacje (646)
  • ECMAScript dla języka XML (648)
    • Podejście (648)
    • Pętla for each...in (650)
    • Nowe klasy (650)
    • Implementacje (660)
  • Podsumowanie (660)
Skorowidz (661)