SlideShare a Scribd company logo
1 of 22
Download to read offline
IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TRE CI   JavaScript. Projekty
           KATALOG KSI¥¯EK
                                         Autor: William B. Sanders
                      KATALOG ONLINE     T³umaczenie: Adam Jarczyk
                                         ISBN: 83-7197-811-1
                                         Tytu³ orygina³u: JavaScript Design
       ZAMÓW DRUKOWANY KATALOG           Format: B5, stron: 420

              TWÓJ KOSZYK
                    DODAJ DO KOSZYKA     Doskona³y przewodnik po tajnikach jêzyka JavaScript, przeznaczony dla tych
                                         projektantów WWW, którym przesta³ wystarczaæ HTML. Bogato ilustrowana
                                         praktycznymi przyk³adami ksi¹¿ka jest kompletnym podrêcznikiem najpopularniejszego
         CENNIK I INFORMACJE             jêzyka skryptowego, którego znajomo æ pozwala o¿ywiæ strony internetowe. Autor nie
                                         zatrzymuje siê na czysto wizualnych aspektach zastosowania JavaScriptu. Pokazuje
                   ZAMÓW INFORMACJE      tak¿e sposoby komunikowania siê JavaScriptu z aplikacjami dzia³aj¹cymi po stronie
                     O NOWO CIACH        serwera, napisanymi w PHP, ASP czy Perlu, a tak¿e odczytywanie i przetwarzanie
                                         dokumentów XML.
                       ZAMÓW CENNIK      JavaScript — od podstaw po techniki zaawansowane.
                                           • Sk³adnia JavaScriptu
                                           • Obs³uga okienek z ostrze¿eniami i komunikatami
                 CZYTELNIA                 • Efekty podmiany obrazka (rollover) i animacja z wykorzystaniem warstw
                                           • Odczytywanie i wysy³anie ciasteczek (cookies)
          FRAGMENTY KSI¥¯EK ONLINE         • Obs³uga ramek i otwieranie nowych okien przegl¹darki
                                           • Model dokumentu DOM
                                           • Krótkie wprowadzenie do ASP, Perla i PHP — integracja JavaScriptu ze skryptami
                                             dzia³aj¹cymi po stronie serwera
                                           • Podstawy VBScript
                                           • £¹czenie JavaScriptu z apletami Javy
                                           • Korzystanie z dokumentów XML
                                         „JavaScript projekty”, kompendium JavaScriptu, zawieraj¹ce tak¿e wprowadzenie do
                                         wielu pokrewnych, przydatnych technologii, to obowi¹zkowa pozycja na pó³ce twórcy
                                         stron internetowych. Ta ksi¹¿ka rozszerzy Twoje horyzonty!

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treści
                O Autorze .......................................................................................... 9

Część I         Podstawy JavaScriptu ....................................................11
Rozdział 1. Podstawowe informacje o języku JavaScript ..................................... 13
                JavaScript w stronach WWW ...........................................................................................14
                Jak umieścić JavaScript w stronie HTML.........................................................................15
                Szczególne mo liwości JavaScriptu..................................................................................16
                Język interpretowany.........................................................................................................23
                Bajka o dwóch interpreterach............................................................................................24
                Generowany JavaScript.....................................................................................................24
                Podsumowanie ..................................................................................................................26
Rozdział 2. Wprowadzenie do języka JavaScript.................................................. 27
                Jak pisać w języku JavaScript? .........................................................................................27
                Reguły i konwencje nazewnicze .......................................................................................33
                Słaba kontrola typów danych ............................................................................................34
                Podsumowanie ..................................................................................................................35
Rozdział 3. Dane i zmienne ................................................................................ 37
                Literały ..............................................................................................................................37
                Zmienne.............................................................................................................................48
                Dane proste i zło one ........................................................................................................51
                Tablice...............................................................................................................................52
                Podsumowanie ..................................................................................................................60
Rozdział 4. Stosowanie operatorów i wyrażeń..................................................... 61
                Operatory ogólne i operatory poziomu bitowego .............................................................61
                Operatory ogólne w JavaScripcie......................................................................................62
                Operatory...........................................................................................................................62
                Pierwszeństwo...................................................................................................................81
                Podsumowanie ..................................................................................................................82
Rozdział 5. Struktury JavaScriptu....................................................................... 83
                Instrukcje w strukturach sekwencyjnych ..........................................................................84
                Struktury warunkowe ........................................................................................................87
                Pętle...................................................................................................................................93
                Instrukcja with...................................................................................................................97
                Instrukcje label i continue oraz pętle zagnie d one..........................................................99
                Podsumowanie ................................................................................................................101
6                                                                                                                 JavaScript. Projekty


Rozdział 6. Budowanie i wywoływanie funkcji ................................................... 103
                Metody i funkcje .............................................................................................................103
                Tworzenie funkcji ...........................................................................................................105
                Uruchamianie funkcji za pomocą obsługi zdarzeń .........................................................106
                Instrukcja return ..............................................................................................................110
                U ywanie funkcji jako danych........................................................................................111
                Właściwości w funkcjach................................................................................................112
                Metody w funkcjach........................................................................................................113
                Podsumowanie ................................................................................................................114
Rozdział 7. Obiekty i hierarchie obiektów ......................................................... 117
                Hierarchia obiektów w JavaScripcie ...............................................................................117
                Obiekty zdefiniowane przez u ytkownika ......................................................................120
                Obiekty wbudowane i ich właściwości ...........................................................................123
                Najwa niejsze metody obiektów wbudowanych ............................................................129
                Podsumowanie ................................................................................................................135

Część II        JavaScript w stronach WWW ........................................137
Rozdział 8. Programowanie obiektowe w języku JavaScript
            i model obiektów dokumentu (DOM) .............................................. 139
                Programowanie obiektowe w języku JavaScript.............................................................140
                Idea prototypu .................................................................................................................141
                Model obiektów dokumentu............................................................................................149
                Podsumowanie ................................................................................................................155
Rozdział 9. Ramki i adresowanie ramek w oknie .............................................. 157
                Okno jako obiekt zło ony ...............................................................................................157
                Skrypty, które piszą skrypty............................................................................................161
                Podsumowanie ................................................................................................................171
Rozdział 10. Funkcje obsługi zdarzeń ................................................................. 173
                Obiekty location, anchor i history ...................................................................................174
                Zdarzenia i obsługa zdarzeń w HTML-u i JavaScripcie .................................................182
                Podsumowanie ................................................................................................................191
Rozdział 11. Formularze..................................................................................... 193
                Ró norodne typy elementów formularzy w HTML-u ....................................................194
                Wpisy tekstowe jako łańcuchy........................................................................................195
                Przekazywanie danych pomiędzy formularzami i zmiennymi .......................................197
                Formularz jako tablica.....................................................................................................199
                Typy formularzy..............................................................................................................203
                Przyciski i związane z nimi zdarzenia.............................................................................213
                Podsumowanie ................................................................................................................222
Rozdział 12. Dynamiczny HTML.......................................................................... 223
                Czym jest dynamiczny HTML? ......................................................................................223
                Kaskadowe arkusze stylów .............................................................................................224
                Obramowania ..................................................................................................................233
                Zewnętrzne arkusze stylów CSS .....................................................................................237
                Rola JavaScriptu w dynamicznym HTML-u ..................................................................238
                Podsumowanie ................................................................................................................243
Spis treści                                                                                                                                       7


Rozdział 13. Zapamiętywanie za pomocą cookies .............................................. 245
                 Czym są cookies i jak są wykorzystywane?....................................................................245
                 Jak zaprząc cookies do pracy ..........................................................................................246
                 Dodatkowe atrybuty ........................................................................................................248
                 Otrzymywanie i zwracanie informacji ............................................................................250
                 Podsumowanie ................................................................................................................252

Część III JavaScript i inne aplikacje i języki.................................253
Rozdział 14. JavaScript i PHP ............................................................................ 255
                 Język skryptowy PHP .....................................................................................................255
                 Przekazywanie danych z JavaScriptu do PHP ................................................................264
                 Kontrola nad wieloma stronami PHP z JavaScriptu .......................................................266
                 Wstępne przetwarzanie formularzy dla PHP przez JavaScript .......................................270
                 JavaScript, PHP i MySQL...............................................................................................275
                 Podsumowanie ................................................................................................................290
Rozdział 15. ASP i JavaScript ............................................................................ 291
                 Tworzenie stron ASP ......................................................................................................292
                 Zmienne w języku VBScript ...........................................................................................293
                 Operatory i instrukcje warunkowe ..................................................................................294
                 Struktury pętli..................................................................................................................298
                 Przekazywanie danych z JavaScriptu do ASP ................................................................301
                 Kontrola nad wieloma stronami ASP poprzez JavaScript ..............................................303
                 Microsoft Access, ASP i JavaScript................................................................................307
                 Tworzenie pliku Access 2000 .........................................................................................308
                 Umieszczenie pliku Access 2000 na serwerze i przygotowanie DSN ............................309
                 Utworzenie połączenia pomiędzy stroną ASP i plikiem bazy danych............................310
                 Odczyt bazy danych Access 2000 z ASP .........................................................................311
                 Odczyt i wyświetlanie wielu pól równocześnie ..............................................................312
                 Wstawianie rekordów z HTML-a do bazy Access..........................................................313
                 Podsumowanie ................................................................................................................315
Rozdział 16. CGI i Perl ...................................................................................... 317
                 Pisanie skryptów w Perlu ................................................................................................317
                 Krótkie wprowadzenie do Perla ......................................................................................320
                 Operatory w Perlu ...........................................................................................................322
                 Instrukcje Perla................................................................................................................323
                 Obsługa plików w Perlu ..................................................................................................326
                 Przekazywanie danych z HTML-a do CGI .....................................................................332
                 Podsumowanie ................................................................................................................337
Rozdział 17. XML i JavaScript............................................................................ 339
                 Mistyczna otoczka wokół XML-a...................................................................................339
                 Co to jest XML?..............................................................................................................340
                 Odczytywanie i wyświetlanie danych z XML-a za pomocą JavaScriptu .......................342
                 Podsumowanie ................................................................................................................350
Rozdział 18. Flash ActionScript i JavaScript ....................................................... 351
                 ActionScript i JavaScript.................................................................................................351
                 Uruchamianie funkcji JavaScriptu z Flasha ....................................................................352
                 Przekazywanie zmiennych z Flasha 5 do JavaScriptu ....................................................354
                 Podsumowanie ................................................................................................................358
8                                                                                                                JavaScript. Projekty


Rozdział 19. JavaScript i inne języki................................................................... 359
                JavaScript i aplety Javy ...................................................................................................359
                Elementy Javy .................................................................................................................361
                JavaScript i ColdFusion ..................................................................................................365
                JavaScript i ASP.NET .....................................................................................................367
                Podsumowanie ................................................................................................................368

                Dodatki........................................................................369
                Przykładowy słownik ...................................................................... 371
                Skorowidz...................................................................................... 401
Rozdział 8.
Programowanie
obiektowe
w języku JavaScript
i model obiektów
dokumentu (DOM)
   W rozdziale:
       Programowanie obiektowe w języku JavaScript
       Idea prototypu
       Model obiektów dokumentu

   Jak dotąd obiekty były omawiane jedynie pod kątem ich budowania i adresowania ró -
   nych właściwości i metod. Pod pewnymi względami właściwości zachowują się jak
   zmienne — mo emy przypisywać im wartości, które mogą później być zmieniane.
   Analogicznie pokazaliśmy, e metody są funkcjami skojarzonymi z obiektami i ich wła-
   ściwościami. Co jednak wa niejsze, wiele luźnych fragmentów kodu mo emy połączyć
   w obiekt, który zawiera wszystkie informacje udostępniane przez zmienne i czynności
   właściwe dla funkcji. Jeśli wyobrazimy sobie obiekt jako zbiór nazwanych właściwo-
   ści mających wartości, które mogą być danymi dowolnego typu, zobaczymy, e są
   one elementami konstrukcyjnymi dla skryptu. Pamiętając, e funkcje mogą być typem
   danych, nazywamy je metodami, jeśli są wartością właściwości. Mo e w tym pomóc
   myślenie o obiektach jako o zakodowanych modułach, które pomagają w organizo-
   waniu skryptów.
138                                                Część II ♦ JavaScript w stronach WWW


      JavaScript ma obiekty, a więc musimy pomyśleć o programowaniu z ich u yciem.
      Poniewa zakładam, e większość Czytelników tej ksią ki ma raczej doświadczenie
      w projektowaniu witryn, a nie w programowaniu, to fakt, i programowanie obiekto-
      we (OOP — object-oriented programming) w JavaScripcie ró ni się od OOP w C++
      lub Javie, nie powinien nikogo rozczarować. Zamiast wdawać się w spory, czy Java-
      Script jest językiem obiektowym, czy nie, zamierzam traktować JavaScript jak rodzaj
      języka obiektowego. Podobnie, jak republikanie i demokraci tworzą odmienne partie
      polityczne, lecz nadal partie, JavaScript jest typem obiektowego języka programowa-
      nia, mimo e nie przypomina innych języków OOP. W następnym podrozdziale wszyst-
      kie komentarze będą dotyczyły tego, co sprawia, e JavaScript jest językiem obiekto-
      wym, i co to oznacza dla osoby piszącej skrypty w sposób obiektowy.



Programowanie obiektowe
w języku JavaScript
      O obiektach w JavaScripcie mo emy myśleć między innymi jak o tablicach asocja-
      cyjnych (skojarzeniowych). Czytelnik mógł się tego spodziewać z przedstawionych
      wcześniej opisów tablic i z faktu u ywania instrukcji HQT/KP do wydobywania infor-
      macji z obiektów. Poni szy skrypt tworzy obiekt, przypisuje do niego dane, a następ-
      nie wydobywa w postaci tablicy:

      objectArray.html
        JVON
        JGCF
        VKVNG 6CDNKEC UMQLCTGPKQYCVKVNG
        UETKRV NCPIWCIG ,CXC5ETKRV
        XCT VTGG  PGY 1DLGEV

        VTGGUKG  W G K Y[ UG PK YWL ,KO 
        VTGGUJCFG  NCVGO Y PKO LGUV EJ QFPQ 
        VTGGHCNN  *QFWLGO[ YKGNMKG F[PKG
        XCT FKURNC[  VTGG= UKG ? 
 DT 
        FKURNC[ 
 VTGG= UJCFG ? 
 DT
        FKURNC[ 
 VTGG= HCNN ?
        FQEWOGPVYTKVG
FKURNC[
        UETKRV
        JGCF
        DQF[ DIEQNQT YJGCV
        DQF[
        JVON

      Jak widać, wszystkie właściwości obiektu VTGG są zasadniczo elementami tablicy VTGG.
      Jest to tablica skojarzeniowa; mo emy uznawać obiekty JavaScriptu za obiekty skoja-
      rzeniowe.

      U ywając funkcji, mo emy tworzyć obiekty z nich zło one. Takie funkcje noszą na-
      zwę funkcji konstruktorskich. Gdy następnie utworzymy obiekt z funkcji konstruktor-
      skiej, u ywając nowego konstruktora, nowy obiekt będzie miał właściwości w funkcji.
Rozdział 8. ♦ Programowanie obiektowe w języku JavaScript...                              139


        Poni szy przykład wykorzystuje funkcję konstruktorską do utworzenia nowego obiektu
        o nazwie Bloomfield. Wszystkie właściwości tego obiektu dziedziczą właściwości
        obiektu Mall.

        constructFuncObj.html
          JVON
          JGCF
          VKVNG /GVQFC MQPUVTWMVQTUMCVKVNG
          UETKRV NCPIWCIG ,CXC5ETKRV
          (WPMELC MQPUVTWMVQTUMC
          HWPEVKQP /CNN
UV0COGUJQRRTQFWEV ]
                VJKUUV0COG  UV0COG
                VJKUUJQR  UJQR
                VJKURTQFWEV  RTQFWEV
                _
          XCT $NQQOHKGNF  PGY /CNN
 $NQQO[  0WVU CPF .KIJVPKPI $QNVU  1TICPKE 'NGEVTKEKV[ 
          XCT FKURNC[  $NQQOHKGNFUV0COG 
 DT 
          FKURNC[ 
 $NQQOHKGNFUJQR 
 DT 
          FKURNC[ 
 $NQQOHKGNFRTQFWEV
          FQEWOGPVYTKVG
FKURNC[
          UETKRV
          JGCF
          DQF[ DIEQNQT OKPVETGCO
          DQF[
          JVON

        Jak zobaczymy na ekranie, wszystkie właściwości obiektu /CNN zostały odziedziczone
        przez obiekt $NQQOHKGNF. Pomocne w zrozumieniu tego mo e być myślenie o meto-
        dach jako o właściwościach funkcji, a nie prostych funkcjach dołączonych do obiektu.
        Dzięki temu lepiej zrozumiemy, e funkcja jest istotnie właściwością.



Idea prototypu
        Większość ró nic pomiędzy JavaScriptem a językami takimi jak Java polega na tym,
        i programowanie obiektowe w Javie opiera się na innym typie klasy ni w Java-
        Scripcie. W tradycyjnym programowaniu obiektowym klasa jest zbiorem, natomiast
        ka dy obiekt jest egzemplarzem tej klasy lub zbioru. Jednak e w JavaScripcie pojęcie
        klasy obraca się dookoła idei prototypu. W przeciwieństwie do pojęcia obiektu jako
        zbioru, gdzie egzemplarz obiektu jest członkiem klasy, idea prototypu traktuje na-
        zwany obiekt biorąc pod uwagę wszystkie właściwości, jakie posiadają wszystkie
        obiekty przynale ące do klasy. Rozwa my na przykład klasę o nazwie Mall.

        Obiekt /CNN (ang. pasa handlowy) posiada kilka właściwości przynale nych wszyst-
        kich pasa om handlowym. Oto ich lista:
            nazwa (Bloomfield Mall),
            sklepy (mięsny, cukiernia, sklep sportowy itd.),
            liczba sklepów (15),
140                                                 Część II ♦ JavaScript w stronach WWW


          klienci (liczba klientów lub nazwiska),
          pracownicy (liczba lub nazwiska),
          role (kasjer, kierownik, ochrona, złodziej).

      W JavaScripcie pojęcie klasy w zastosowaniu do /CNN sugeruje, i /CNN posiada wszyst-
      kie właściwości typowe dla pasa u handlowego. Wobec tego mo emy, zajmując się
      klasą Mall, stosować poni sze właściwości:
        /CNNPCOG PCYC
        /CNNUJQR UMNGR
        /CNNUJQR0WODGT NKEDC UMNGRÎY
        /CNNEWUVQOGT MNKGPV
        /CNNGORNQ[GG RTCEQYPKM
        /CNNTQNGU TQNG

      Aby zobaczyć ró nice pomiędzy zmienną a obiektem, poni szy skrypt definiuje obiekt
      /CNN i zmienną /CNN. Zdefiniowana zmienna została oznaczona jako komentarz za po-
      mocą podwójnego ukośnika (), poniewa zmienna /CNN nie będzie działać jako zde-
      finiowany obiekt:

      objChara.html
        JVON
        JGCF
        VKVNG OKGPPC K QDKGMVVKVNG
        UETKRV NCPIWCIG ,CXC5ETKRV
        XCT /CNN  PGY 1DLGEV

        /CNNUJQRU  5MNGR 8KPP[ GIQ  DTQ K CTV[MW [ RKGTYUGL RQOQE[ 
        XCT /CNN
        /CNNUJQRU  5CNQP W [YCP[EJ MKLÎY IQNHQY[EJ K MNKPKMC CPCNKV[EPC 
        FQEWOGPVYTKVG
/CNNUJQRU
        UETKRV
        JGCF
        DQF[ DIEQNQT OKPVETGCO
        DQF[
        JVON

      Jeśli usuniemy podwójne ukośniki i zamiast tego oznaczymy w skrypcie jako komen-
      tarz oryginalny obiekt /CNN, zobaczymy, e skrypt nie zadziała, poniewa zmienna
      zdefiniowana w drugim przypadku nie utworzyła obiektu. Zamiast tego została utwo-
      rzona zmienna, a chocia zmienne mają pewne właściwości (na przykład długość), to
      nie mo na przypisywać im właściwości.


Obiekty String i Date
      Musimy jeszcze omówić dwa wa ne obiekty wbudowane — 5VTKPI i CVG. Ka dy
      z nich ma właściwości, metody i parametry, które trzeba poznać. Obiekt CVG z punktu
      widzenia projektu jest mocno wyspecjalizowany, lecz mo emy go u yć na wiele cie-
      kawych sposobów, a nie tylko do wyświetlania daty i godziny. Dla projektanta wa -
      niejszy jest obiekt 5VTKPI i sposoby, na jakie mo e posłu yć do formatowania wy-
      świetlanych danych.
Rozdział 8. ♦ Programowanie obiektowe w języku JavaScript...                             141


Sposób użycia obiektu String
        Obiekt 5VTKPI posiada mnóstwo metod, lecz na razie omówimy tylko najwa niejsze
        wybrane z nich. Czytelnik mo e zacząć przyglądać się ró nym sposobom formatowa-
        nia łańcuchów i uczyć się, jak wykorzystać wbudowane właściwości do manipulowa-
        nia wyglądem strony na ekranie. Na przykład, poni szy skrypt zawiera obiekt łańcu-
        chowy wykorzystujący równocześnie pięć metod:

        stringMethod.html
          JVON
          JGCF
          VKVNG 1DKGMV[ K OGVQF[ C EWEJQYGVKVNG
          UETKRV NCPIWCIG ,CXC5ETKRV
          XCT O[9QTF  PGY 5VTKPI
 0KGITGEPKG LGUV OTWICè 
          O[9QTF  O[9QTFUWDUVTKPI
HQPVUKG
KVCNKEU
HQPVEQNQT
 TGF DNKPM

          FQEWOGPVYTKVG
O[9QTF
          #VT[DWV DNKPM TWLPQYC YKúEGL UVQUWPMQYQ RT[YQKV[EJ RTQLGMVÎY 999 PK
          LCMKMQNYKGM KPP[ K QUVC Y MQ EW Y[GNKOKPQYCP[ Q QDGLTGPKC VGL
          KT[VWLæEGL OGVQF[ RQVTGDPC LGUV UVCTUC RTGINæFCTMC 

          UETKRV
          JGCF
          DQF[ DI%QNQT RGCEJRWHH
          DQF[
          JVON

        Proszę zwrócić uwagę, e po zdefiniowaniu obiektu za pomocą konstruktora 5VTKPI

        mo liwe jest zapisanie poni szej instrukcji z pięcioma metodami dołączonymi do sa-
        mego obiektu łańcuchowego:
          O[9QTF  O[9QTFUWDUVTKPI
HQPVUKG
KVCNKEU
HQPVEQNQT
 TGF DNKPM


        Na końcu skryptu obiekt łańcuchowy O[9QTF posiada właściwości UWDUVTKPI (podłań-
        cuch), HQPVUKG (rozmiar czcionki), KVCNKEU (pochylenie), HQPVEQNQT (kolor czcionki)
        — czerwony oraz DNKPM — czcionka migająca. Jak widzimy, u ywając łańcucha jako
        obiektu mo emy kontrolować jego wygląd na stronie.

          Proszę nigdy nie używać migających czcionek w prawdziwych projektach! Wywołują
          one oczopląs — a poza tym działają tylko w Netscape Navigatorze.


        Metody łańcuchowe mo emy podzielić na trzy kategorie, jak pokazano w tabeli 8.1.

        Metody znacznikowe
        Metody znacznikowe skojarzone z łańcuchami odpowiadają znacznikom języka HTML.
        Na przykład metoda DQNF
 jest skojarzona ze znacznikiem D pogrubiającym czcion-
        kę. Analogicznie HQPVEQNQT
 i HQPVUKG
 są skojarzone ze znacznikiem (QPV . Uwa-
        ga projektanci — proszę uwa ać z tymi metodami. Z powodu mo liwości i elastycz-
        ności kaskadowych arkuszy stylów (CSS) wiele znaczników, takich jak (QPV , nie
        jest ju zalecanych. Jeśli przyzwyczaimy się zbytnio do u ywania metod znaczniko-
        wych w JavaScripcie, mo emy pewnego dnia zostać daleko w tyle z przestarzałą
142                                                   Część II ♦ JavaScript w stronach WWW


Tabela 8.1. Typy metod łańcuchowych
 Znaczniki                        Czynności                     Wyra enia regularne
 #PEJQT
                         EJCT#V
                      OCVEJ

 $KI
                            EJCT%QFG
                    TGRNCEG

 $NKPM
     V[NMQ Y 00           EQPECV
                      UGCTEJ

 $QNF
                           KPFGZ1H
                     URNKV

 (KZGF
                          NCUV+PFGZ1H

 (QPVEQNQT
                      UNKEG

 (QPVUKG
                       UWDUVTKPI

 +VCNKEU
                        UWDUVT

 .KPM
                           VQ.QYGT%CUG

 5OCNN
                          VQ7RRGT%CUG

 5VTKMG

 5WD

 5WR


          technologią. Proszę przejrzeć rozdział 12., „Dynamiczny HTML”, i zobaczyć, co mo-
           emy osiągnąć, łącząc CSS z JavaScriptem. Przy okazji zobaczymy, ile wbudowa-
          nych metod mo emy dodać do łańcucha.

          Metody czynnościowe
          U ywam terminu „metody czynnościowe” do oznaczenia metod przekształcających
          skład łańcucha lub znajdujących informacje o łańcuchach, lecz nie u ywających wy-
          ra eń regularnych. Metody te są podstawowymi narzędziami pracy z łańcuchami.
          Najwa niejsze z nich zajmują się identyfikacją podłańcuchów i znaków.
               UWDUVTKPI
RQEæVGMMQPKGE — podaje pozycję liczbową w łańcuchu pierwszego
               i ostatniego znaku podłańcucha, który ma zostać wydzielony z łańcucha.
               EJCT#V
P — podaje wartość pozycji liczbowej znaku w łańcuchu.
               EJCT%QFG#V
P — podaje wartość pozycji znaku w łańcuchu i zwraca wartość
               tego znaku (n) w Unicode (ASCII).
               KPFGZ1H
UWDUVT — podaje fragment (podłańcuch) do znalezienia w łańcuchu
               i zwraca pozycję pierwszego znaku podłańcucha. NCUV+PFGZ1H
 działa tak
               samo, lecz zaczyna od końca łańcucha.
               VQ7RRGT%CUG
 i VQ.QYGT%CUG
 — przekształca łańcuch na same wielkie
               lub same małe litery.

          Poni szy skrypt daje przykład wykorzystania wszystkich powy szych metod, poza
          indeksowaniem:

          stringMethod2.html
             JVON
             JGCF
             VKVNG /GVQFC VKVNG
Rozdział 8. ♦ Programowanie obiektowe w języku JavaScript...                              143


          UETKRV NCPIWCIG ,CXC5ETKRV
          XCT SWQVG  PGY 5VTKPI
 1PC Y[TC C C YU[UVMKG OQ NKYG GOQELG 
          XCT FGZ  SWQVGVQ.QYGT%CUG
UWDUVTKPI

          XCT VGTKV[  SWQVGVQ7RRGT%CUG
EJCT#V

          FGZ  FGZEQPECV
VGTKV[
          FQEWOGPVYTKVG
FGZ
          UETKRV
          JGCF
          DQF[ DI%QNQT NCXGPFGTDNWUJ
          DQF[
          JVON

        Metody wyrażeń regularnych
        Ostatnim typem metod łańcuchowych są metody u ywające wyra eń regularnych. Jak
        intensywnie będziemy korzystać z tych metod, to ju zale y od konkretnego projektu,
        lecz wyra enia regularne są doskonałym narzędziem do pracy z łańcuchami. Propo-
        nuję wrócić do opisu wyra eń regularnych w rozdziale 3., „Dane i zmienne”, lub przej-
        rzeć opis CGI i języka Perl w rozdziale 16., „CGI i Perl”, gdzie zostały omówione bar-
        dziej szczegółowo ró ne formaty wyra eń regularnych.

        Czterema metodami wyra eń regularnych dla obiektu łańcuchowego są:
            OCVEJ
TGIGZR — zwraca podciąg opisany wyra eniem regularnym
            lub wartość PWNN.
            TGRNCEG
TGIGZRUWDUVKVWVG —zastępuje wyra enie regularne łańcuchem
            UWDUVKVWVG.
            UGCTEJ
TGIGZR — znajduje pozycję początkową łańcucha opisanego
            wyra eniem regularnym.
            URNKV
TGIGZR — ta metoda działa zarówno na łańcuchach, jak i na wyra eniach
            regularnych (JavaScript 1.2). Łańcuch jest dzielony w miejscu wyra enia
            regularnego (mo liwe, e w wielu miejscach), człon z wyra enia regularnego
            jest odrzucany, zaś łańcuch jest przekształcany w tablicę, której elementy
            oddzielane są poło eniem odrzuconego podłańcucha.

        Poni szy skrypt przedstawia sposób działania wszystkich czterech metod. Proszę zwró-
        cić uwagę, jak metoda 5VTKPIUGCTEJ
GZR została u yta w metodzie 5VTKPIUNKEG

        w celu znalezienia składnika z wyra enia regularnego. Wynik działania skryptu przed-
        stawia rysunek 8.1.

        srngRegExpMeth.html
          JVON
          JGCF
          UV[NG V[RG VGZVEUU
          DQF[ ]
          HQPVHCOKN[ XGTFCPC
          DCEMITQWPFEQNQT GE
          _
          J ]
          EQNQT FE
144                                                  Część II ♦ JavaScript w stronach WWW


Rysunek 8.1.
Metody wyra eń
regularnych
skojarzone
z obiektem
łańcuchowym
są efektywnym
dodatkiem
do narzędzi
formatujących
dostępnych
w JavaScripcie




          DCEMITQWPFEQNQT CH
          _
          UV[NG
          VKVNG /GVQF[ Y[TCGP TGIWNCTP[EJ Y NCPEWEJCEJ VKVNG
          UETKRV NCPIWCIG ,CXC5ETKRV
          UVTKPIOCVEJ

          XCT OCVEJ6JKU  CITCL VQ LGUEG TC 5CO 
          XCT UVTKPIGT  OCVEJ6JKUOCVEJ
UCOK

          UVTKPITGRNCEG

          XCT TGRNCEG6JKU  6GP UMT[RV LGUV QUCFQP[ Y Lú[MW ,CXC 
          XCT UVTKPIGT  TGRNCEG6JKUTGRNCEG
,CXCI *6/. 

          UVTKPIUGCTEJ

          XCT UGCTEJ6JKU  YYYUCPFNKIJVEQO 
          XCT UVTKPIGT  UGCTEJ6JKUUNKEG
UGCTEJ6JKUUGCTEJ
EQO

          UVTKPIURNKV

          XCT URNKV6JKU  1PC OC FYC RQYC PG RTQDNGO[
          XCT UVTKPIGT  URNKV6JKUURNKV
FYC RQYC PGK

          XCT FKURNC[  J /GVQF[ Y[TC G TGIWNCTP[EJ Y QDKGMVCEJ C EWEJQY[EJJ 
          FKURNC[ 
 OCVEJ6JKU 
 UVCLG UKú  
 UVTKPIGT 
 DT
          FKURNC[ 
 TGRNCEG6JKU 
 UVCLG UKú  
 UVTKPIGT 
 DT
          FKURNC[ 
 UGCTEJ6JKU 
 UVCLG UKú  RQOQEæ UVTKPIUNKEG
  
 UVTKPIGT
          å
 DT
          FKURNC[ 
 URNKV6JKU 
 UVCLG UKú VCDNKEæ  
 UVTKPIGT=?
      
 UVTKPIGT=?
          å
 DT
          XCT UJQY1HH  PGY 5VTKPI
FKURNC[
          FQEWOGPVYTKVG
UJQY1HHHQPVEQNQT
  
          UETKRV
          JGCF
          DQF[
          DQF[
          JVON
Rozdział 8. ♦ Programowanie obiektowe w języku JavaScript...                                    145


         Ró ne metody wyra eń regularnych w obiekcie łańcuchowym mogą zaoszczędzić nam
         nieco czasu na znajdowanie pozycji w łańcuchach. Zamiast szukania podłańcucha lub
         pozycji za pomocą pętli, warto pomyśleć o zastosowaniu metod wyra eń regularnych.

Wykorzystanie obiektu Date
         Obiekt CVG posiada 40 metod i 9 argumentów. Jednak e wiele z tych metod mo e nie
         być u ywanych zbyt często (np. dotyczące czasu Greenwich), zaś większość metod po-
         biera lub ustawia jedno i to samo. Mimo to Czytelnik powinien zapoznać się z meto-
         dami i argumentami obiektu CVG. Tabela 8.2 zawiera ich zestawienie.

Tabela 8.2. Właściwości obiektu Date
 Argumenty
 /KNKUGEQPFU                 Liczba milisekund od 1 stycznia 1970.
 CVGUVTKPI                  Określona data i czas w formacie łańcuchowym (czas jest opcjonalny).
 ;GCT                        Rok w zapisie czterocyfrowym (np. 2002).
 /QPVJ                       Miesiąc numerowany od 0 do 11 (styczeń ma nr 0).
 C[                         Dzień miesiąca numerowany od 1 do 31. (Kto wie, dlaczego dni
                             zaczynają się od 1 a wszystko inne od 0?).
 *QWTU                       Godzina dnia od 0 do 23.
 /KPWVGU                     Liczba minut od 0 do 59.
 5GEQPFU                     Liczba sekund od 0 do 59.
 /U                          Liczba milisekund od 0 do 999.
 Metody                      Większość zwracanych wartości jest definiowanych przez datę
                             w obiekcie CVG, nawet jeśli nie jest to bie ąca data i czas.
 IGVCVG
                   Zwraca dzień miesiąca.
 IGVC[
                    Zwraca dzień tygodnia.
 IGV(WNN;GCT
               Zwraca bie ący rok z obiektu CVG.
 IGV*QWTU
                  Zwraca godziny.
 IGV/KNKUGEQPFU
            Zwraca liczbę milisekund od 01.01.1970 do daty określonej w obiekcie.
 IGV/KPWVGU
                Zwraca minuty.
 IGV/QPVJ
                  Zwraca miesiąc w postaci liczby całkowitej.
 IGV5GEQPFU
                Zwraca sekundy.
 IGV6KOG
                   Zwraca aktualną godzinę w milisekundach.
 IGV6KOGQPG1HHUGV
         Zwraca ró nicę w strefach czasowych pomiędzy czasem lokalnym
                             i uniwersalnym (UTC).
 IGV76%CVG
                Zwraca dzień miesiąca w UTC.
 IGV76%C[
                 Zwraca dzień tygodnia w UTC.
 IGV76%(WNN;GCT
            Zwraca bie ący rok w UTC.
 IGV76%*QWTU
               Zwraca godzinę w UTC.
 IGV76%/KNKUGEQPFU
         Zwraca liczbę milisekund od 01.01.1970 do bie ącej UTC.
146                                                         Część II ♦ JavaScript w stronach WWW


Tabela 8.2. Właściwości obiektu Date (ciąg dalszy)
  Metody
  IGV76%/KPWVGU
              Zwraca minuty w UTC.
  IGV76%/QPVJ
                Zwraca miesiąc w UTC w postaci liczby całkowitej.
  IGV76%5GEQPFU
              Zwraca sekundy w UTC.
  IGV;GCT
                    Zwraca pole roku; metoda nie zalecana (zastąpiona przez IGV(WNN;GCT
).
  UGVCVG
                    Ustawia dzień miesiąca.
  UGV(WNN;GCT
                Ustawia rok.
  UGV*QWTU
                   Ustawia godzinę.
  UGV/KNKUGEQPFU
             Ustawia milisekundy.
  UGV/KPWVGU
                 Ustawia minuty.
  UGV/QPVJ
                   Ustawia miesiąc jako liczbę całkowitą.
  UGV5GEQPFU
                 Ustawia sekundy.
  UGV6KOG
                    Ustawia bie ący czas w milisekundach.
  UGV76%CVG
                 Ustawia dzień miesiąca w UTC.
  UGV76%(WNN;GCT
             Ustawia rok w UTC.
  UGV76%*QWTU
                Ustawia godzinę w UTC.
  UGV76%/KNKUGEQPFU
          Ustawia pole milisekund w UTC.
  UGV76%/KPWVGU
              Ustawia minuty w UTC.
  UGV76%/QPVJ
                Ustawia miesiąc w UTC jako liczbę całkowitą.
  UGV76%5GEQPFU
              Ustawia sekundy w UTC.
  UGV;GCT
                    Ustawia rok; metoda nie zalecana (zastąpiona przez UGV(WNN;GCT
).
  VQ)/65VTKPI
                Konwertuje datę na łańcuch, u ywając UTC lub GMT.
  VQ.QECNG5VTKPI
             Konwertuje datę i czas.
  VQ76%5VTKPI
                Konwertuje na łańcuch, stosując UTC.
  XCNWG1H
                    Konwertuje na milisekundy.

        Obiekt CVG jest łatwy w u yciu, mimo tak oszałamiającego zbioru opcji. Jednak e
        w większości przypadków obiekt ten jest stosowany do porównania przeszłej lub
        obecnej daty z aktualną albo po prostu do wyświetlania daty na ekranie. Za pomocą
        zegara UTC mo na tworzyć ciekawe zegary ogólnoświatowe i inne interesujące zda-
        rzenia (events) związane z upływem czasu, więc nie powinniśmy zapominać o metodach
        dla CVG podczas umieszczania daty i czasu na stronach WWW. Poni szy skrypt przed-
        stawia przykład, jak obiekt CVG mo e posłu yć do przypominania o Walentynkach:

        date.html
              JVON
              JGCF
              UETKRV NCPIWCIG ,CXC5ETKRV
              XCT 0QYCVG  PGY CVG

              XCT CVG0QY  0QYCVGIGVCVG

              XCT /QPVJ0QY  0QYCVGIGV/QPVJ
Rozdział 8. ♦ Programowanie obiektowe w języku JavaScript...                           147


          #D[ PCNG è 9CNGPV[PMK RQVTGDP[ LGUV OKGUKæE  K FKG 
          /KGUKæEG CE[PCLæ UKú QF  YKúE NWV[ OC PWOGT  PK NKEQPG Uæ
          QF  + PKG CRQOPKL Q RTCYFKYGL MCTVEG YCNGPV[PMQYGL

          KH 
CVG0QY      /QPVJ0QY   ]
                CNGTV
 KUKCL 9CNGPV[PMK 
                _ GNUG ]
                CNGTV 
 CEGMCL FQ  NWVGIQ PKGRQRTCYP[ TQOCPV[MW 
          _
          UETKRV
          JGCF
          DQF[ DIEQNQT RKPM
          DQF[
          JVON



Po co nam programowanie obiektowe?
        To wprowadzenie do programowania obiektowego ma zachęcić do myślenia o ele-
        mentach JavaScriptu jako obiektach, ich właściwościach i metodach. W większości
        zastosowań skrypty w JavaScripcie są krótkie; wprawdzie dobra organizacja progra-
        mowania jest wa na nawet w krótkich skryptach, lecz programowanie obiektowe nie
        jest w nich niezbędne. Gdy jednak zaczniemy pracować w większych zespołach nad
        projektami WWW i skrypty zaczną zwiększać objętość, programowanie obiektowe
        zacznie być coraz wa niejsze. Poniewa zachęca ono do tworzenia modułowych jed-
        nostek programu, jednostki te mo emy udostępniać innym pracownikom zespołu i wy-
        korzystywać ponownie, co oznacza, e nie będziemy musieli wywa ać otwartych
        drzwi za ka dym razem, gdy siądziemy do pracy nad skryptem.

        Dla projektanta witryn WWW idea modułowych elementów projektu, zdatnych do
        ponownego wykorzystania, jest bardziej oczywista i intuicyjna. Programowanie obiek-
        towe jest podobne. Jeśli potrafimy napisać zło ony fragment kodu w postaci modułu,
        wówczas następnym razem, gdy taki sam kod będzie potrzebny, będziemy mogli albo
        nieco zmodyfikować kod (np. zmienić wartości argumentów), albo u yć tego samego
        modułu w innym miejscu. Dzięki temu czas poświęcony na napisanie kodu zwróci się.



Model obiektów dokumentu
        W modelu obiektów dokumentu (DOM — Document Object Model) JavaScriptu pod-
        stawowym dokumentem jest strona HTML-a. Jak ju powiedzieliśmy, obiekt YKPFQY,
        który zawiera ramki, jest na szczycie hierarchii przeglądarki WWW. Jednak e obiekt
        QEWOGPV zawiera właściwości, z których informacje są wykorzystywane przez Java-
        Script. Aby odrzeć DOM z tajemniczości, pomyślmy o nim jak o obiekcie QEWOGPV
        razem z wszystkimi właściwościami, w tym z metodami. Instrukcje, takie jak FQEW
        OGPVYTKVG
, składają się z obiektu (FQEWOGPV) i właściwości lub metody (YTKVG
),
        które są częścią modelu. Upraszczając nieco do przesady, mo emy powiedzieć, e mo-
        del obiektów dokumentu JavaScript jest sumą wszystkich właściwości i metod obiektu
        QEWOGPV, łącznie z tablicami automatycznie generowanymi na stronie HTML, oraz
        sposobów dostępu do tych obiektów w JavaScripcie.
148                                                       Część II ♦ JavaScript w stronach WWW


Właściwości obiektu Document
          Patrząc na właściwości obiektu QEWOGPV, mo emy odczuć coś w rodzaju déjà vu z pod-
          rozdziału poświęconego obiektowi 5VTKPI z wcześniejszej części tego rozdziału. Zo-
          baczymy pewne podobieństwa, lecz w większości przypadków właściwości (z pomi-
          nięciem metod) składające się na DOM są unikatowe dla obiektu QEWOGPV. Tabela 8.3
          przedstawia właściwości tego obiektu.

Tabela 8.3. Właściwości obiektu Document
 Nazwa właściwości              Skojarzona właściwość
 CNKPM%QNQT                     Aktywny kolor wybranego łącza.
 CPEJQTU=VCDNKEC?               Ka de zaczepienie na stronie HTML jest elementem tablicy.
 CRRNGVU=VCDNKEC?               Ka dy aplet na stronie HTML jest elementem tablicy.
 DI%QNQT                        Kolor tła dokumentu.
 EQQMKG                         Pliki tekstowe, które JavaScript mo e zapisywać i odczytywać.
 FQOCKP                         Właściwość zabezpieczeń, która mo e być wykorzystana przez
                                dwa lub więcej serwerów WWW, aby zmniejszyć ograniczenia
                                na interakcje pomiędzy stronami WWW.
 GODGFU=VCDNKEC?                Ka dy obiekt osadzony jest elementem tablicy GODGFU=?.
 (działa równie                 Przykładami obiektów osadzonych są rozszerzenia plug-in
 RNWIKPU=VCDNKEC?)              i pliki .swf (patrz rozdział 18., „Flash ActionScript i JavaScript”,
                                w którym omówiono osadzone pliki Flash w JavaScripcie).
 HI%QNQT                        Kolor tekstu.
 HQTOU=VCDNKEC?                 Ka dy formularz na stronie HTML jest elementem tablicy, a ka dy
                                obiekt w formularzu jest elementem elementu HQTO (formularz).
                                Rozdział 11., „Formularze”, szczegółowo omawia formularze
                                w JavaScripcie.
 KOCIGU=VCDNKEC?                Ka dy obraz na stronie HTML jest elementem tablicy KOCIGU=?
                                (tablica ta będzie omówiona szczegółowo w dalszej części rozdziału).
 NCUV/QFKHKGF                   Data ostatniej modyfikacji w formacie łańcuchowym.
 NKPM%QNQT                      Początkowy kolor łącza przed odwiedzeniem strony (domyślnie
                                niebieski).
 NKPMU=VCDNKEC?                 Ka de łącze jest elementem tablicy, gdy pojawia się w dokumencie.
 NQECVKQP                       Właściwość URL; obecnie podawana jako 74. (patrz pozycja 74.
                                w dalszej części tabeli).
 TGHGTGT                        Poprzednia strona, która zawiera łącze do bie ącej.
 VKVNG                          Tytuł dokumentu.
 74.                            Nowa wersja właściwości lokalizacji podająca URL załadowanej
                                strony.
 XNKPM%QNQT                     Kolor odwiedzonego łącza.

          Poni szy skrypt przedstawia działanie niektórych z właściwości dokumentu. Obiekt
          HQTO jest tablicą, zaś funkcja JavaScriptu adresuje jedyny obiekt tekstowy jako ele-
          ment tablicy formularzy.
Rozdział 8. ♦ Programowanie obiektowe w języku JavaScript...                             149


        bgcolor.html
          JVON
          JGCF
          UETKRV NCPIWCIG ,CXC5ETKRV
          HWPEVKQP OGUUCIG
JWG ]
                FQEWOGPVHQTOU=?GNGOGPVU=?XCNWGJWG
                _
          0GVUECRG 
 PCLY[TC PKGL CE[PC NKE[è GNGOGPV[ QF  COKCUV QF GTC 9 GHGMEKG
          YU[UVMKG QFYQ CPKC FQ FQEWOGPVHQTOU=?GNGOGPVU=? RQYQFWLæ CCFTGUQYCPKG
          RT[EKUMW KYPG
          UETKRV
          VKVNG [PCOKEPG OKCP[ MQNQTWVKVNG
          JGCF
          DQF[
          * W C EEKQPMC J
          HQTO
          KPRWV V[RGDWVVQP XCNWG %GTYQP[ QP%NKEM FQEWOGPVDI%QNQT TGF
          åQP/QWUGQYP OGUUCIG
 TGF 
          KPRWV V[RGDWVVQP XCNWG KGNQP[ QP%NKEM FQEWOGPVDI%QNQT ITGGP
          åQP/QWUG1XGT OGUUCIG
 ITGGP 
          KPRWV V[RGDWVVQP XCNWG 0KGDKGUMK QP%NKEM FQEWOGPVDI%QNQT DNWG
          åQP/QWUG/QXG OGUUCIG
 DNWG  DT
          KPRWV V[RGDWVVQP XCNWG Î VC EEKQPMC QP%NKEM FQEWOGPVHI%QNQT [GNNQY      DT
          KPRWV V[RGDWVVQP XCNWG %GINCUVC EEKQPMC QP%NKEM FQEWOGPVHI%QNQT HKTGDTKEM
          R
          KPRWV V[RGVGZV
          HQTO
          DQF[
          JVON

        Innymi wa nymi właściwościami obiektu QEWOGPV są obiekty CTTC[ (tablica), HQTO
        (formularz) i KOCIG (obraz). Formularze będą omówione szczegółowo w rozdziale 11.,
        zaś tablice były opisane w rozdziale 3. Wa nym obiektem tablicy dokumentu, który
        warto tu przeanalizować dokładniej, jest właściwość KOCIG (obraz) jako obiekt.


Obiekty obrazów
        Obiekt KOCIG jest jednym z najbardziej interesujących w HTML-u i JavaScripcie. Gdy
        umieszczamy kolejno obrazy na stronie HTML, korzystając ze znacznika KOI , umiesz-
        czamy obrazy w tablicy. Nie deklarujemy tablicy, lecz tworzymy ją przez umieszcza-
        nie obrazów na ekranie. Tablica ta budowana jest następująco:
          FQEWOGPVKOCIGU=?
          FQEWOGPVKOCIGU=?
          FQEWOGPVKOCIGU=?

        Na stronie HTML te same obrazy wyglądałyby tak:
          KOI UTE  ITCHKMC#IKH
          KOI UTE  ITCHKMC$IKH
          KOI UTE  HQVQITCHKC#IKH
150                                                  Część II ♦ JavaScript w stronach WWW


      Jedną z właściwości obiektu KOCIG, jakie mo emy zmieniać dynamicznie w JavaScrip-
      cie, jest wartość UTE. Następny skrypt wykorzystuje obrazy GIF o rozmiarze jednego
      piksela przeskalowane do pionowych pasków. Aby utworzyć jednopikselowy GIF, wy-
      starczy otworzyć program graficzny u ywany do obróbki GIF-ów (np. Photoshop lub
      Fireworks) i zdefiniować rozmiar obszaru roboczego 1×1 piksel, a następnie powięk-
      szyć lupą do rozmiarów pozwalających na pracę z obrazem. Teraz proszę nadać ob-
      szarowi roboczemu kolor o jednej z poni szych wartości szesnastkowych:
         CEH         EGE           GCD             HHGD
         CDEC         E           FGDG

      Proszę zapisać ka dy jednopikselowy GIF pod nazwą od c1.gif do c7.gif. Poni szy
      skrypt mówi, gdzie ka dy rysunek jest umieszczony i pokazuje, e JavaScript po-
      zwala adresować tablicę obrazów przez adresy w tablicy od 0 do 6. Skrypt adresuje
      obraz jako część obiektu QEWOGPV w sposób następujący:
        FQEWOGPVKOCIGU=?UTE  PCYC1DTCWUTE

      PCYC1DTCWUTE jest częścią obiektu KOCIG utworzonego w JavaScripcie. Przy two-
      rzeniu obiektu URL (lub nazwa pliku) obrazu źródłowego jest następujący:
        PCYC1DTCWUTE  PCYC4[UWPMWIKH

      Poniewa JavaScript potrafi jedynie zmieniać dynamicznie wartość UTE w FQEWOGPV
      KOCIGU=P?UTE, nowa wartość musi być zdefiniowana jako UTE, a nie jako sama nazwa
      obrazu lub URL.

      images.html
        JVON
        JGCF
        VKVNG 6CDNKEC QDTCÎYVKVNG
        UETKRV NCPIWCIG ,CXC5ETKRV
        HWPEVKQP EJCPIG+V
 ]
              XCT E  PGY +OCIG

              XCT P  FQEWOGPVHQTOU=?JWGXCNWG
              P  RCTUG+PV
P
              EUTE  EIKH
              FQEWOGPVKOCIGU=P?UTE  EUTE
        _
        0KG YRKU[YCè YCTVQ EK YKúMU[EJ PK 
        UETKRV
        JGCF
        DQF[
        VCDNG DQTFGT EQNU YKFVJ  JGKIJV       DIEQNQT EEEEEE
        VT
        VF CNKIPEGPVGT XCNKIPEGPVGT KOI PCOG  E   UTE EIKH DQTFGT JGKIJV
        åYKFVJ VF
        VF CNKIPEGPVGT XCNKIPEGPVGT KOI PCOG  E   UTE EIKH DQTFGT JGKIJV
        åYKFVJ VF
        VF CNKIPEGPVGT XCNKIPEGPVGT KOI PCOG  E   UTE EIKH DQTFGT JGKIJV
        åYKFVJ VF
        VF CNKIPEGPVGT XCNKIPEGPVGT KOI PCOG  E   UTE EIKH DQTFGT JGKIJV
        åYKFVJ VF
        VF CNKIPEGPVGT XCNKIPEGPVGT KOI PCOG  E   UTE EIKH DQTFGT JGKIJV
        åYKFVJ VF
Rozdział 8. ♦ Programowanie obiektowe w języku JavaScript...                               151


            VF CNKIPEGPVGT XCNKIPEGPVGT KOI PCOG  E UTE EIKH DQTFGT JGKIJV
            åYKFVJ VF
            VF CNKIPEGPVGT XCNKIPEGPVGT KOI PCOG  E UTE EIKH DQTFGT JGKIJV
            åYKFVJ VF
            VT
            VCDNG
            EGPVGT
            HQTO
            KPRWV V[RGVGZV PCOG JWG UKG R
            KPRWV V[RGDWVVQP XCNWG -NKMPKL CD[ OKGPKè MQNQT QDTCW QP%NKEM EJCPIG+V
 
            HQTO
            EGPVGT
            DQF[
            JVON

         Rysunek 8.2 przedstawia słupki o ró nych kolorach, tak jak będą wyglądać na ekra-
         nie, oraz pole do wpisywania wartości elementu tablicy obrazów.

Rysunek 8.2.
Strona HTML
zawierająca
tablicę obrazów
— JavaScript
mo e adresować
tablicę i zmieniać
wartości src




         Wprawdzie inne właściwości obiektu QEWOGPV, jak np. tablice NKPMU=? i CPEJQTU=?,
         równie mogą być adresowane, lecz dla projektanta najwa niejsza jest właściwość
         KOCIGU=?.

Wstępne ładowanie obrazów
         Gdy projektujemy stronę, w której jeden obraz jest zastępowany innym, zamiana obra-
         zów musi być natychmiastowa, a od u ytkownika nie mo emy wymagać cierpliwego
         oczekiwania na załadowanie nowego obrazu. Na szczęście w JavaScripcie wstępne
         ładowanie obrazów (do pamięci podręcznej) jest proste. Najpierw definiowany jest nowy
         obiekt KOCIG, a następnie definiowane jest źródło nowego obiektu, jak pokazano poni ej:
152                                                      Część II ♦ JavaScript w stronach WWW


            XCT EKGMCY[1DTCGM  PGY +OCIG

            EKGMCY[1DTCGMUTE  PQYC(QVMCLRI 

          I to ju wszystko. Obraz znajduje się teraz w pamięci podręcznej przeglądarki — zo-
          stał wstępnie załadowany. Pamiętając, e obiekty obrazów mogą być traktowane jak
          tablica, mo emy umieścić wstępnie załadowany obiekt w zdefiniowanym w HTML-u
          miejscu na obraz. Na przykład, jeśli mamy następujący wiersz w HTML-u:
            KOI UTE  HKTUV2KZLRI PCOG HKTUV7R

          wówczas mo emy zastąpić go zbuforowanym obrazem za pomocą poni szego wiersza:
            FQEWOGPVKOCIGU=?UTE  EKGMCY[1DTCGMUTE KOCIGU=? LGUV RKGTYU[O QDTCGO
          lub:
            FQEWOGPVHKTUV7RUTE  EKGMCY[1DTCGMUTE

          Nie istnieje ograniczenie na liczbę obrazów, które mo emy załadować do pamięci
          podręcznej, lecz proszę pamiętać, e pobieranie większej liczby obrazów trwa dłu ej.
          Ponadto podczas procesu ładowania wstępnego mo emy zawrzeć równie wysokość
          i szerokość obrazów. Aby dokonać płynnego zastąpienia, obiekty oryginalny i zastę-
          pujący powinny mieć te same rozmiary. Na przykład, w poni szy sposób mo na do-
          brze dopasować obraz buforowany przez JavaScript z obrazem z HTML-a:
            KOI UTE  HKTUV#TV JGKIJV   YKFVJ   PCOG  RKECUUQ
            XCT GZR#TV  PGY +OCIG


          Wstępnie załadowany obraz będzie miał takie same wymiary jak obraz załadowany
          przez HTML.


Związek z DOM
          W stronie HTML struktura HTML-a zawiera elementy i atrybuty. JavaScript traktuje
          elementy, np. obrazy i formularze, jak obiekty, a atrybuty elementów jak właściwości.
          Na przykład, tabela 8.4 przedstawia atrybuty znacznika KOI w HTML-u:
Tabela 8.4. Atrybuty elementu img w HTML-u
 UTE                              CNV                             NQPIFGUE
 CNKIP                            JGKIJV                          YKFVJ
 DQTFGT                           JURCEG                          XURCEG
 WUGOCR                           KUOCR

          W JavaScripcie element +/) jest traktowany jak obiekt KOCIGU=?, a wszystkie atry-
          buty elementu +/) jak właściwości obiektu KOCIGU=?. JavaScript potrafi odczytywać
          wszystkie właściwości obrazu, lecz mo e zmienić jedynie właściwość UTE.

          Podobnie jak wszystkie pozostałe elementy HTML-a i ich atrybuty pojawiające się na
          stronie (w dokumencie), stanowią one element składowy modelu obiektów dokumentu
          (DOM). Stosunek JavaScriptu do obiektów dokumentu jest takie jak elementów HTML-a
          do właściwości adresowanego obiektu. Gdy więc struktura strony wynika z elemen-
          tów i atrybutów HTML-a, zachowanie strony bierze się ze zdolności JavaScriptu do
          dynamicznych zmian określonych atrybutów (właściwości) elementów (obiektów).
Rozdział 8. ♦ Programowanie obiektowe w języku JavaScript...                          153



Podsumowanie
        Obiekty są podstawą JavaScriptu, a zrozumienie modelu obiektów dokumentu w Java-
        Scripcie w stosunku do HTML-a jest niezbędne do efektywnego wykorzystania roz-
        licznych obiektów, jakie mo emy znaleźć na stronie WWW. Programowanie obiek-
        towe miało w zało eniach pomóc w opanowaniu ogromnych wieloprogramowych
        projektów, w których trzeba było koordynować tysiące wierszy kodu. W typowych
        zadaniach, z jakimi spotyka się większość projektantów, potrzeba programowania
        obiektowego nie polega na konieczności zapanowania nad gigantycznym projektem,
        poniewa większość JavaScriptu zajmuje się prostymi zadaniami wykonywanymi na
        pojedynczych stronach. Jednak e nawet drobne postępy w kierunku programowania
        obiektowego pomogą lepiej zrozumieć zjawiska zachodzące na naszej stronie WWW
        i łatwiej osiągać zało one efekty.

        Projektant stron WWW powinien być w stanie wyobrazić sobie wyniki działania dy-
        namicznej strony WWW, a następnie o ywić stronę za pomocą JavaScriptu. Poznając
        zało enia programowania obiektowego oraz pojęcia obiektów, właściwości i metod
        w JavaScripcie, zrobiliśmy olbrzymi krok w tym kierunku. Proszę nie uwa ać progra-
        mowania obiektowego za cię ar, lecz raczej za okazję do lepszego zrozumienia pro-
        duktów własnej wyobraźni. Analogicznie, proszę nie traktować programowania obiek-
        towego jako ograniczeń własnej kreatywności. Czasami Czytelnik nie będzie w stanie
        znaleźć rozwiązania problemu z u yciem programowania obiektowego, lecz do roz-
        wiązania mo emy dojść, wykorzystując zmienne i instrukcje nie zawierające obiek-
        tów łączonych z właściwościami i metodami. Za to nie grozi kara więzienia! Robiąc
        drobne kroczki w stronę programowania obiektowego, w końcu nauczymy się wyko-
        rzystywać w pełni jego mo liwości.

More Related Content

What's hot

Flash 8. Techniki zaawansowane. Klatka po klatce
Flash 8. Techniki zaawansowane. Klatka po klatceFlash 8. Techniki zaawansowane. Klatka po klatce
Flash 8. Techniki zaawansowane. Klatka po klatceWydawnictwo Helion
 
CSS i Ajax. Strony WWW zgodne ze standardami sieciowymi W3C
CSS i Ajax. Strony WWW zgodne ze standardami sieciowymi W3CCSS i Ajax. Strony WWW zgodne ze standardami sieciowymi W3C
CSS i Ajax. Strony WWW zgodne ze standardami sieciowymi W3CWydawnictwo Helion
 
Po prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowanePo prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowaneWydawnictwo Helion
 
Ajax. Niezbędnik projektanta dynamicznych aplikacji
Ajax. Niezbędnik projektanta dynamicznych aplikacjiAjax. Niezbędnik projektanta dynamicznych aplikacji
Ajax. Niezbędnik projektanta dynamicznych aplikacjiWydawnictwo Helion
 
ActionScript. Przewodnik encyklopedyczny
ActionScript. Przewodnik encyklopedycznyActionScript. Przewodnik encyklopedyczny
ActionScript. Przewodnik encyklopedycznyWydawnictwo Helion
 
Projektowanie serwisów WWW. Standardy sieciowe
Projektowanie serwisów WWW. Standardy siecioweProjektowanie serwisów WWW. Standardy sieciowe
Projektowanie serwisów WWW. Standardy siecioweWydawnictwo Helion
 
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatce
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatceFlash CS3 Professional PL. Techniki zaawansowane. Klatka po klatce
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatceWydawnictwo Helion
 

What's hot (20)

JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
PHP w mgnieniu oka
PHP w mgnieniu okaPHP w mgnieniu oka
PHP w mgnieniu oka
 
Flash 8. Techniki zaawansowane. Klatka po klatce
Flash 8. Techniki zaawansowane. Klatka po klatceFlash 8. Techniki zaawansowane. Klatka po klatce
Flash 8. Techniki zaawansowane. Klatka po klatce
 
CSS i Ajax. Strony WWW zgodne ze standardami sieciowymi W3C
CSS i Ajax. Strony WWW zgodne ze standardami sieciowymi W3CCSS i Ajax. Strony WWW zgodne ze standardami sieciowymi W3C
CSS i Ajax. Strony WWW zgodne ze standardami sieciowymi W3C
 
Po prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowanePo prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowane
 
Contribute 2. Szybki start
Contribute 2. Szybki startContribute 2. Szybki start
Contribute 2. Szybki start
 
AJAX w mgnieniu oka
AJAX w mgnieniu okaAJAX w mgnieniu oka
AJAX w mgnieniu oka
 
Po prostu Pajączek 5 NxG
Po prostu Pajączek 5 NxGPo prostu Pajączek 5 NxG
Po prostu Pajączek 5 NxG
 
Ajax. Niezbędnik projektanta dynamicznych aplikacji
Ajax. Niezbędnik projektanta dynamicznych aplikacjiAjax. Niezbędnik projektanta dynamicznych aplikacji
Ajax. Niezbędnik projektanta dynamicznych aplikacji
 
PHP5. Praktyczny kurs
PHP5. Praktyczny kursPHP5. Praktyczny kurs
PHP5. Praktyczny kurs
 
ActionScript. Przewodnik encyklopedyczny
ActionScript. Przewodnik encyklopedycznyActionScript. Przewodnik encyklopedyczny
ActionScript. Przewodnik encyklopedyczny
 
Praktyczny kurs Java
Praktyczny kurs JavaPraktyczny kurs Java
Praktyczny kurs Java
 
JavaScript i DHTML. Receptury
JavaScript i DHTML. RecepturyJavaScript i DHTML. Receptury
JavaScript i DHTML. Receptury
 
Projektowanie serwisów WWW. Standardy sieciowe
Projektowanie serwisów WWW. Standardy siecioweProjektowanie serwisów WWW. Standardy sieciowe
Projektowanie serwisów WWW. Standardy sieciowe
 
Po prostu Java 2
Po prostu Java 2Po prostu Java 2
Po prostu Java 2
 
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatce
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatceFlash CS3 Professional PL. Techniki zaawansowane. Klatka po klatce
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatce
 
JSP i XML
JSP i XMLJSP i XML
JSP i XML
 
HTML i XHTML dla każdego
HTML i XHTML dla każdegoHTML i XHTML dla każdego
HTML i XHTML dla każdego
 
Java. Potrzaski
Java. PotrzaskiJava. Potrzaski
Java. Potrzaski
 
Dreamweaver MX. Ćwiczenia
Dreamweaver MX. ĆwiczeniaDreamweaver MX. Ćwiczenia
Dreamweaver MX. Ćwiczenia
 

Viewers also liked

Viewers also liked (16)

ASP.NET. Vademecum profesjonalisty
ASP.NET. Vademecum profesjonalistyASP.NET. Vademecum profesjonalisty
ASP.NET. Vademecum profesjonalisty
 
VB .NET. Almanach
VB .NET. AlmanachVB .NET. Almanach
VB .NET. Almanach
 
Projektowanie baz danych XML. Vademecum profesjonalisty
Projektowanie baz danych XML. Vademecum profesjonalistyProjektowanie baz danych XML. Vademecum profesjonalisty
Projektowanie baz danych XML. Vademecum profesjonalisty
 
Joomla! System zarządzania treścią
Joomla! System zarządzania treściąJoomla! System zarządzania treścią
Joomla! System zarządzania treścią
 
.NET CLR. Księga eksperta
.NET CLR. Księga eksperta.NET CLR. Księga eksperta
.NET CLR. Księga eksperta
 
C# 3.0 i .NET 3.5. Technologia LINQ
C# 3.0 i .NET 3.5. Technologia LINQC# 3.0 i .NET 3.5. Technologia LINQ
C# 3.0 i .NET 3.5. Technologia LINQ
 
Microsoft SQL Server 2000. Księga eksperta
Microsoft SQL Server 2000. Księga ekspertaMicrosoft SQL Server 2000. Księga eksperta
Microsoft SQL Server 2000. Księga eksperta
 
Mathcad. Ćwiczenia. Wydanie II
Mathcad. Ćwiczenia. Wydanie IIMathcad. Ćwiczenia. Wydanie II
Mathcad. Ćwiczenia. Wydanie II
 
JavaScript. Ćwiczenia praktyczne. Wydanie II
JavaScript. Ćwiczenia praktyczne. Wydanie IIJavaScript. Ćwiczenia praktyczne. Wydanie II
JavaScript. Ćwiczenia praktyczne. Wydanie II
 
Mandriva. Ćwiczenia
Mandriva. ĆwiczeniaMandriva. Ćwiczenia
Mandriva. Ćwiczenia
 
Oracle. Optymalizacja wydajności
Oracle. Optymalizacja wydajnościOracle. Optymalizacja wydajności
Oracle. Optymalizacja wydajności
 
Windows XP PL. Biblia
Windows XP PL. BibliaWindows XP PL. Biblia
Windows XP PL. Biblia
 
sendmail. Receptury
sendmail. Recepturysendmail. Receptury
sendmail. Receptury
 
ABC Photoshop 7
ABC Photoshop 7ABC Photoshop 7
ABC Photoshop 7
 
ABC Delphi 6
ABC Delphi 6ABC Delphi 6
ABC Delphi 6
 
TCP/IP. Księga eksperta
TCP/IP. Księga ekspertaTCP/IP. Księga eksperta
TCP/IP. Księga eksperta
 

Similar to JavaScript. Projekty

Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningWydawnictwo Helion
 
Java w komercyjnych usługach sieciowych. Księga eksperta
Java w komercyjnych usługach sieciowych. Księga ekspertaJava w komercyjnych usługach sieciowych. Księga eksperta
Java w komercyjnych usługach sieciowych. Księga ekspertaWydawnictwo Helion
 
JavaScript dla webmasterów. Zaawansowane programowanie
JavaScript dla webmasterów. Zaawansowane programowanieJavaScript dla webmasterów. Zaawansowane programowanie
JavaScript dla webmasterów. Zaawansowane programowanieWydawnictwo Helion
 
Java. Usługi WWW. Vademecum profesjonalisty
Java. Usługi WWW. Vademecum profesjonalistyJava. Usługi WWW. Vademecum profesjonalisty
Java. Usługi WWW. Vademecum profesjonalistyWydawnictwo Helion
 
Serwisy internetowe. Programowanie
Serwisy internetowe. ProgramowanieSerwisy internetowe. Programowanie
Serwisy internetowe. ProgramowanieWydawnictwo Helion
 
J2EE. Vademecum profesjonalisty. Wydanie II
J2EE. Vademecum profesjonalisty. Wydanie IIJ2EE. Vademecum profesjonalisty. Wydanie II
J2EE. Vademecum profesjonalisty. Wydanie IIWydawnictwo Helion
 
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki startPHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki startWydawnictwo Helion
 
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie IIPHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie IIWydawnictwo Helion
 
Praktyczny kurs Java. Wydanie II
Praktyczny kurs Java. Wydanie IIPraktyczny kurs Java. Wydanie II
Praktyczny kurs Java. Wydanie IIWydawnictwo Helion
 
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalistyPHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalistyWydawnictwo Helion
 
Ajax. Wzorce i najlepsze rozwiązania
Ajax. Wzorce i najlepsze rozwiązaniaAjax. Wzorce i najlepsze rozwiązania
Ajax. Wzorce i najlepsze rozwiązaniaWydawnictwo Helion
 

Similar to JavaScript. Projekty (20)

Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
JavaScript. Biblia
JavaScript. BibliaJavaScript. Biblia
JavaScript. Biblia
 
JavaScript. Rozmówki
JavaScript. RozmówkiJavaScript. Rozmówki
JavaScript. Rozmówki
 
Delphi. Szybki start
Delphi. Szybki startDelphi. Szybki start
Delphi. Szybki start
 
Java. Kompendium programisty
Java. Kompendium programistyJava. Kompendium programisty
Java. Kompendium programisty
 
Java w komercyjnych usługach sieciowych. Księga eksperta
Java w komercyjnych usługach sieciowych. Księga ekspertaJava w komercyjnych usługach sieciowych. Księga eksperta
Java w komercyjnych usługach sieciowych. Księga eksperta
 
JavaScript dla webmasterów. Zaawansowane programowanie
JavaScript dla webmasterów. Zaawansowane programowanieJavaScript dla webmasterów. Zaawansowane programowanie
JavaScript dla webmasterów. Zaawansowane programowanie
 
Java. Usługi WWW. Vademecum profesjonalisty
Java. Usługi WWW. Vademecum profesjonalistyJava. Usługi WWW. Vademecum profesjonalisty
Java. Usługi WWW. Vademecum profesjonalisty
 
Java 2. Podstawy
Java 2. PodstawyJava 2. Podstawy
Java 2. Podstawy
 
Serwisy internetowe. Programowanie
Serwisy internetowe. ProgramowanieSerwisy internetowe. Programowanie
Serwisy internetowe. Programowanie
 
JavaServer Faces. Wydanie II
JavaServer Faces. Wydanie IIJavaServer Faces. Wydanie II
JavaServer Faces. Wydanie II
 
J2EE. Vademecum profesjonalisty. Wydanie II
J2EE. Vademecum profesjonalisty. Wydanie IIJ2EE. Vademecum profesjonalisty. Wydanie II
J2EE. Vademecum profesjonalisty. Wydanie II
 
Java. Sztuka programowania
Java. Sztuka programowaniaJava. Sztuka programowania
Java. Sztuka programowania
 
Java 2. Techniki zaawansowane
Java 2. Techniki zaawansowaneJava 2. Techniki zaawansowane
Java 2. Techniki zaawansowane
 
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki startPHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki start
 
C# i ASP.NET. Szybki start
C# i ASP.NET. Szybki startC# i ASP.NET. Szybki start
C# i ASP.NET. Szybki start
 
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie IIPHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
 
Praktyczny kurs Java. Wydanie II
Praktyczny kurs Java. Wydanie IIPraktyczny kurs Java. Wydanie II
Praktyczny kurs Java. Wydanie II
 
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalistyPHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
 
Ajax. Wzorce i najlepsze rozwiązania
Ajax. Wzorce i najlepsze rozwiązaniaAjax. Wzorce i najlepsze rozwiązania
Ajax. Wzorce i najlepsze rozwiązania
 

More from Wydawnictwo Helion

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyWydawnictwo Helion
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikWydawnictwo Helion
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczneWydawnictwo Helion
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieWydawnictwo Helion
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsWydawnictwo Helion
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IIWydawnictwo Helion
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuWydawnictwo Helion
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIWydawnictwo Helion
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykWydawnictwo Helion
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaWydawnictwo Helion
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieWydawnictwo Helion
 
USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++Wydawnictwo Helion
 

More from Wydawnictwo Helion (20)

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. Projekty
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnik
 
Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
 
Word 2007 PL. Seria praktyk
Word 2007 PL. Seria praktykWord 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanie
 
USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++
 

JavaScript. Projekty

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TRE CI JavaScript. Projekty KATALOG KSI¥¯EK Autor: William B. Sanders KATALOG ONLINE T³umaczenie: Adam Jarczyk ISBN: 83-7197-811-1 Tytu³ orygina³u: JavaScript Design ZAMÓW DRUKOWANY KATALOG Format: B5, stron: 420 TWÓJ KOSZYK DODAJ DO KOSZYKA Doskona³y przewodnik po tajnikach jêzyka JavaScript, przeznaczony dla tych projektantów WWW, którym przesta³ wystarczaæ HTML. Bogato ilustrowana praktycznymi przyk³adami ksi¹¿ka jest kompletnym podrêcznikiem najpopularniejszego CENNIK I INFORMACJE jêzyka skryptowego, którego znajomo æ pozwala o¿ywiæ strony internetowe. Autor nie zatrzymuje siê na czysto wizualnych aspektach zastosowania JavaScriptu. Pokazuje ZAMÓW INFORMACJE tak¿e sposoby komunikowania siê JavaScriptu z aplikacjami dzia³aj¹cymi po stronie O NOWO CIACH serwera, napisanymi w PHP, ASP czy Perlu, a tak¿e odczytywanie i przetwarzanie dokumentów XML. ZAMÓW CENNIK JavaScript — od podstaw po techniki zaawansowane. • Sk³adnia JavaScriptu • Obs³uga okienek z ostrze¿eniami i komunikatami CZYTELNIA • Efekty podmiany obrazka (rollover) i animacja z wykorzystaniem warstw • Odczytywanie i wysy³anie ciasteczek (cookies) FRAGMENTY KSI¥¯EK ONLINE • Obs³uga ramek i otwieranie nowych okien przegl¹darki • Model dokumentu DOM • Krótkie wprowadzenie do ASP, Perla i PHP — integracja JavaScriptu ze skryptami dzia³aj¹cymi po stronie serwera • Podstawy VBScript • £¹czenie JavaScriptu z apletami Javy • Korzystanie z dokumentów XML „JavaScript projekty”, kompendium JavaScriptu, zawieraj¹ce tak¿e wprowadzenie do wielu pokrewnych, przydatnych technologii, to obowi¹zkowa pozycja na pó³ce twórcy stron internetowych. Ta ksi¹¿ka rozszerzy Twoje horyzonty! Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl
  • 2. Spis treści O Autorze .......................................................................................... 9 Część I Podstawy JavaScriptu ....................................................11 Rozdział 1. Podstawowe informacje o języku JavaScript ..................................... 13 JavaScript w stronach WWW ...........................................................................................14 Jak umieścić JavaScript w stronie HTML.........................................................................15 Szczególne mo liwości JavaScriptu..................................................................................16 Język interpretowany.........................................................................................................23 Bajka o dwóch interpreterach............................................................................................24 Generowany JavaScript.....................................................................................................24 Podsumowanie ..................................................................................................................26 Rozdział 2. Wprowadzenie do języka JavaScript.................................................. 27 Jak pisać w języku JavaScript? .........................................................................................27 Reguły i konwencje nazewnicze .......................................................................................33 Słaba kontrola typów danych ............................................................................................34 Podsumowanie ..................................................................................................................35 Rozdział 3. Dane i zmienne ................................................................................ 37 Literały ..............................................................................................................................37 Zmienne.............................................................................................................................48 Dane proste i zło one ........................................................................................................51 Tablice...............................................................................................................................52 Podsumowanie ..................................................................................................................60 Rozdział 4. Stosowanie operatorów i wyrażeń..................................................... 61 Operatory ogólne i operatory poziomu bitowego .............................................................61 Operatory ogólne w JavaScripcie......................................................................................62 Operatory...........................................................................................................................62 Pierwszeństwo...................................................................................................................81 Podsumowanie ..................................................................................................................82 Rozdział 5. Struktury JavaScriptu....................................................................... 83 Instrukcje w strukturach sekwencyjnych ..........................................................................84 Struktury warunkowe ........................................................................................................87 Pętle...................................................................................................................................93 Instrukcja with...................................................................................................................97 Instrukcje label i continue oraz pętle zagnie d one..........................................................99 Podsumowanie ................................................................................................................101
  • 3. 6 JavaScript. Projekty Rozdział 6. Budowanie i wywoływanie funkcji ................................................... 103 Metody i funkcje .............................................................................................................103 Tworzenie funkcji ...........................................................................................................105 Uruchamianie funkcji za pomocą obsługi zdarzeń .........................................................106 Instrukcja return ..............................................................................................................110 U ywanie funkcji jako danych........................................................................................111 Właściwości w funkcjach................................................................................................112 Metody w funkcjach........................................................................................................113 Podsumowanie ................................................................................................................114 Rozdział 7. Obiekty i hierarchie obiektów ......................................................... 117 Hierarchia obiektów w JavaScripcie ...............................................................................117 Obiekty zdefiniowane przez u ytkownika ......................................................................120 Obiekty wbudowane i ich właściwości ...........................................................................123 Najwa niejsze metody obiektów wbudowanych ............................................................129 Podsumowanie ................................................................................................................135 Część II JavaScript w stronach WWW ........................................137 Rozdział 8. Programowanie obiektowe w języku JavaScript i model obiektów dokumentu (DOM) .............................................. 139 Programowanie obiektowe w języku JavaScript.............................................................140 Idea prototypu .................................................................................................................141 Model obiektów dokumentu............................................................................................149 Podsumowanie ................................................................................................................155 Rozdział 9. Ramki i adresowanie ramek w oknie .............................................. 157 Okno jako obiekt zło ony ...............................................................................................157 Skrypty, które piszą skrypty............................................................................................161 Podsumowanie ................................................................................................................171 Rozdział 10. Funkcje obsługi zdarzeń ................................................................. 173 Obiekty location, anchor i history ...................................................................................174 Zdarzenia i obsługa zdarzeń w HTML-u i JavaScripcie .................................................182 Podsumowanie ................................................................................................................191 Rozdział 11. Formularze..................................................................................... 193 Ró norodne typy elementów formularzy w HTML-u ....................................................194 Wpisy tekstowe jako łańcuchy........................................................................................195 Przekazywanie danych pomiędzy formularzami i zmiennymi .......................................197 Formularz jako tablica.....................................................................................................199 Typy formularzy..............................................................................................................203 Przyciski i związane z nimi zdarzenia.............................................................................213 Podsumowanie ................................................................................................................222 Rozdział 12. Dynamiczny HTML.......................................................................... 223 Czym jest dynamiczny HTML? ......................................................................................223 Kaskadowe arkusze stylów .............................................................................................224 Obramowania ..................................................................................................................233 Zewnętrzne arkusze stylów CSS .....................................................................................237 Rola JavaScriptu w dynamicznym HTML-u ..................................................................238 Podsumowanie ................................................................................................................243
  • 4. Spis treści 7 Rozdział 13. Zapamiętywanie za pomocą cookies .............................................. 245 Czym są cookies i jak są wykorzystywane?....................................................................245 Jak zaprząc cookies do pracy ..........................................................................................246 Dodatkowe atrybuty ........................................................................................................248 Otrzymywanie i zwracanie informacji ............................................................................250 Podsumowanie ................................................................................................................252 Część III JavaScript i inne aplikacje i języki.................................253 Rozdział 14. JavaScript i PHP ............................................................................ 255 Język skryptowy PHP .....................................................................................................255 Przekazywanie danych z JavaScriptu do PHP ................................................................264 Kontrola nad wieloma stronami PHP z JavaScriptu .......................................................266 Wstępne przetwarzanie formularzy dla PHP przez JavaScript .......................................270 JavaScript, PHP i MySQL...............................................................................................275 Podsumowanie ................................................................................................................290 Rozdział 15. ASP i JavaScript ............................................................................ 291 Tworzenie stron ASP ......................................................................................................292 Zmienne w języku VBScript ...........................................................................................293 Operatory i instrukcje warunkowe ..................................................................................294 Struktury pętli..................................................................................................................298 Przekazywanie danych z JavaScriptu do ASP ................................................................301 Kontrola nad wieloma stronami ASP poprzez JavaScript ..............................................303 Microsoft Access, ASP i JavaScript................................................................................307 Tworzenie pliku Access 2000 .........................................................................................308 Umieszczenie pliku Access 2000 na serwerze i przygotowanie DSN ............................309 Utworzenie połączenia pomiędzy stroną ASP i plikiem bazy danych............................310 Odczyt bazy danych Access 2000 z ASP .........................................................................311 Odczyt i wyświetlanie wielu pól równocześnie ..............................................................312 Wstawianie rekordów z HTML-a do bazy Access..........................................................313 Podsumowanie ................................................................................................................315 Rozdział 16. CGI i Perl ...................................................................................... 317 Pisanie skryptów w Perlu ................................................................................................317 Krótkie wprowadzenie do Perla ......................................................................................320 Operatory w Perlu ...........................................................................................................322 Instrukcje Perla................................................................................................................323 Obsługa plików w Perlu ..................................................................................................326 Przekazywanie danych z HTML-a do CGI .....................................................................332 Podsumowanie ................................................................................................................337 Rozdział 17. XML i JavaScript............................................................................ 339 Mistyczna otoczka wokół XML-a...................................................................................339 Co to jest XML?..............................................................................................................340 Odczytywanie i wyświetlanie danych z XML-a za pomocą JavaScriptu .......................342 Podsumowanie ................................................................................................................350 Rozdział 18. Flash ActionScript i JavaScript ....................................................... 351 ActionScript i JavaScript.................................................................................................351 Uruchamianie funkcji JavaScriptu z Flasha ....................................................................352 Przekazywanie zmiennych z Flasha 5 do JavaScriptu ....................................................354 Podsumowanie ................................................................................................................358
  • 5. 8 JavaScript. Projekty Rozdział 19. JavaScript i inne języki................................................................... 359 JavaScript i aplety Javy ...................................................................................................359 Elementy Javy .................................................................................................................361 JavaScript i ColdFusion ..................................................................................................365 JavaScript i ASP.NET .....................................................................................................367 Podsumowanie ................................................................................................................368 Dodatki........................................................................369 Przykładowy słownik ...................................................................... 371 Skorowidz...................................................................................... 401
  • 6. Rozdział 8. Programowanie obiektowe w języku JavaScript i model obiektów dokumentu (DOM) W rozdziale: Programowanie obiektowe w języku JavaScript Idea prototypu Model obiektów dokumentu Jak dotąd obiekty były omawiane jedynie pod kątem ich budowania i adresowania ró - nych właściwości i metod. Pod pewnymi względami właściwości zachowują się jak zmienne — mo emy przypisywać im wartości, które mogą później być zmieniane. Analogicznie pokazaliśmy, e metody są funkcjami skojarzonymi z obiektami i ich wła- ściwościami. Co jednak wa niejsze, wiele luźnych fragmentów kodu mo emy połączyć w obiekt, który zawiera wszystkie informacje udostępniane przez zmienne i czynności właściwe dla funkcji. Jeśli wyobrazimy sobie obiekt jako zbiór nazwanych właściwo- ści mających wartości, które mogą być danymi dowolnego typu, zobaczymy, e są one elementami konstrukcyjnymi dla skryptu. Pamiętając, e funkcje mogą być typem danych, nazywamy je metodami, jeśli są wartością właściwości. Mo e w tym pomóc myślenie o obiektach jako o zakodowanych modułach, które pomagają w organizo- waniu skryptów.
  • 7. 138 Część II ♦ JavaScript w stronach WWW JavaScript ma obiekty, a więc musimy pomyśleć o programowaniu z ich u yciem. Poniewa zakładam, e większość Czytelników tej ksią ki ma raczej doświadczenie w projektowaniu witryn, a nie w programowaniu, to fakt, i programowanie obiekto- we (OOP — object-oriented programming) w JavaScripcie ró ni się od OOP w C++ lub Javie, nie powinien nikogo rozczarować. Zamiast wdawać się w spory, czy Java- Script jest językiem obiektowym, czy nie, zamierzam traktować JavaScript jak rodzaj języka obiektowego. Podobnie, jak republikanie i demokraci tworzą odmienne partie polityczne, lecz nadal partie, JavaScript jest typem obiektowego języka programowa- nia, mimo e nie przypomina innych języków OOP. W następnym podrozdziale wszyst- kie komentarze będą dotyczyły tego, co sprawia, e JavaScript jest językiem obiekto- wym, i co to oznacza dla osoby piszącej skrypty w sposób obiektowy. Programowanie obiektowe w języku JavaScript O obiektach w JavaScripcie mo emy myśleć między innymi jak o tablicach asocja- cyjnych (skojarzeniowych). Czytelnik mógł się tego spodziewać z przedstawionych wcześniej opisów tablic i z faktu u ywania instrukcji HQT/KP do wydobywania infor- macji z obiektów. Poni szy skrypt tworzy obiekt, przypisuje do niego dane, a następ- nie wydobywa w postaci tablicy: objectArray.html JVON JGCF VKVNG 6CDNKEC UMQLCTGPKQYCVKVNG UETKRV NCPIWCIG ,CXC5ETKRV XCT VTGG PGY 1DLGEV VTGGUKG W G K Y[ UG PK YWL ,KO VTGGUJCFG NCVGO Y PKO LGUV EJ QFPQ VTGGHCNN *QFWLGO[ YKGNMKG F[PKG XCT FKURNC[ VTGG= UKG ? DT FKURNC[ VTGG= UJCFG ? DT FKURNC[ VTGG= HCNN ? FQEWOGPVYTKVG FKURNC[ UETKRV JGCF DQF[ DIEQNQT YJGCV DQF[ JVON Jak widać, wszystkie właściwości obiektu VTGG są zasadniczo elementami tablicy VTGG. Jest to tablica skojarzeniowa; mo emy uznawać obiekty JavaScriptu za obiekty skoja- rzeniowe. U ywając funkcji, mo emy tworzyć obiekty z nich zło one. Takie funkcje noszą na- zwę funkcji konstruktorskich. Gdy następnie utworzymy obiekt z funkcji konstruktor- skiej, u ywając nowego konstruktora, nowy obiekt będzie miał właściwości w funkcji.
  • 8. Rozdział 8. ♦ Programowanie obiektowe w języku JavaScript... 139 Poni szy przykład wykorzystuje funkcję konstruktorską do utworzenia nowego obiektu o nazwie Bloomfield. Wszystkie właściwości tego obiektu dziedziczą właściwości obiektu Mall. constructFuncObj.html JVON JGCF VKVNG /GVQFC MQPUVTWMVQTUMCVKVNG UETKRV NCPIWCIG ,CXC5ETKRV (WPMELC MQPUVTWMVQTUMC HWPEVKQP /CNN UV0COGUJQRRTQFWEV ] VJKUUV0COG UV0COG VJKUUJQR UJQR VJKURTQFWEV RTQFWEV _ XCT $NQQOHKGNF PGY /CNN $NQQO[ 0WVU CPF .KIJVPKPI $QNVU 1TICPKE 'NGEVTKEKV[ XCT FKURNC[ $NQQOHKGNFUV0COG DT FKURNC[ $NQQOHKGNFUJQR DT FKURNC[ $NQQOHKGNFRTQFWEV FQEWOGPVYTKVG FKURNC[ UETKRV JGCF DQF[ DIEQNQT OKPVETGCO DQF[ JVON Jak zobaczymy na ekranie, wszystkie właściwości obiektu /CNN zostały odziedziczone przez obiekt $NQQOHKGNF. Pomocne w zrozumieniu tego mo e być myślenie o meto- dach jako o właściwościach funkcji, a nie prostych funkcjach dołączonych do obiektu. Dzięki temu lepiej zrozumiemy, e funkcja jest istotnie właściwością. Idea prototypu Większość ró nic pomiędzy JavaScriptem a językami takimi jak Java polega na tym, i programowanie obiektowe w Javie opiera się na innym typie klasy ni w Java- Scripcie. W tradycyjnym programowaniu obiektowym klasa jest zbiorem, natomiast ka dy obiekt jest egzemplarzem tej klasy lub zbioru. Jednak e w JavaScripcie pojęcie klasy obraca się dookoła idei prototypu. W przeciwieństwie do pojęcia obiektu jako zbioru, gdzie egzemplarz obiektu jest członkiem klasy, idea prototypu traktuje na- zwany obiekt biorąc pod uwagę wszystkie właściwości, jakie posiadają wszystkie obiekty przynale ące do klasy. Rozwa my na przykład klasę o nazwie Mall. Obiekt /CNN (ang. pasa handlowy) posiada kilka właściwości przynale nych wszyst- kich pasa om handlowym. Oto ich lista: nazwa (Bloomfield Mall), sklepy (mięsny, cukiernia, sklep sportowy itd.), liczba sklepów (15),
  • 9. 140 Część II ♦ JavaScript w stronach WWW klienci (liczba klientów lub nazwiska), pracownicy (liczba lub nazwiska), role (kasjer, kierownik, ochrona, złodziej). W JavaScripcie pojęcie klasy w zastosowaniu do /CNN sugeruje, i /CNN posiada wszyst- kie właściwości typowe dla pasa u handlowego. Wobec tego mo emy, zajmując się klasą Mall, stosować poni sze właściwości: /CNNPCOG PCYC /CNNUJQR UMNGR /CNNUJQR0WODGT NKEDC UMNGRÎY /CNNEWUVQOGT MNKGPV /CNNGORNQ[GG RTCEQYPKM /CNNTQNGU TQNG Aby zobaczyć ró nice pomiędzy zmienną a obiektem, poni szy skrypt definiuje obiekt /CNN i zmienną /CNN. Zdefiniowana zmienna została oznaczona jako komentarz za po- mocą podwójnego ukośnika (), poniewa zmienna /CNN nie będzie działać jako zde- finiowany obiekt: objChara.html JVON JGCF VKVNG OKGPPC K QDKGMVVKVNG UETKRV NCPIWCIG ,CXC5ETKRV XCT /CNN PGY 1DLGEV /CNNUJQRU 5MNGR 8KPP[ GIQ DTQ K CTV[MW [ RKGTYUGL RQOQE[ XCT /CNN /CNNUJQRU 5CNQP W [YCP[EJ MKLÎY IQNHQY[EJ K MNKPKMC CPCNKV[EPC FQEWOGPVYTKVG /CNNUJQRU UETKRV JGCF DQF[ DIEQNQT OKPVETGCO DQF[ JVON Jeśli usuniemy podwójne ukośniki i zamiast tego oznaczymy w skrypcie jako komen- tarz oryginalny obiekt /CNN, zobaczymy, e skrypt nie zadziała, poniewa zmienna zdefiniowana w drugim przypadku nie utworzyła obiektu. Zamiast tego została utwo- rzona zmienna, a chocia zmienne mają pewne właściwości (na przykład długość), to nie mo na przypisywać im właściwości. Obiekty String i Date Musimy jeszcze omówić dwa wa ne obiekty wbudowane — 5VTKPI i CVG. Ka dy z nich ma właściwości, metody i parametry, które trzeba poznać. Obiekt CVG z punktu widzenia projektu jest mocno wyspecjalizowany, lecz mo emy go u yć na wiele cie- kawych sposobów, a nie tylko do wyświetlania daty i godziny. Dla projektanta wa - niejszy jest obiekt 5VTKPI i sposoby, na jakie mo e posłu yć do formatowania wy- świetlanych danych.
  • 10. Rozdział 8. ♦ Programowanie obiektowe w języku JavaScript... 141 Sposób użycia obiektu String Obiekt 5VTKPI posiada mnóstwo metod, lecz na razie omówimy tylko najwa niejsze wybrane z nich. Czytelnik mo e zacząć przyglądać się ró nym sposobom formatowa- nia łańcuchów i uczyć się, jak wykorzystać wbudowane właściwości do manipulowa- nia wyglądem strony na ekranie. Na przykład, poni szy skrypt zawiera obiekt łańcu- chowy wykorzystujący równocześnie pięć metod: stringMethod.html JVON JGCF VKVNG 1DKGMV[ K OGVQF[ C EWEJQYGVKVNG UETKRV NCPIWCIG ,CXC5ETKRV XCT O[9QTF PGY 5VTKPI 0KGITGEPKG LGUV OTWICè O[9QTF O[9QTFUWDUVTKPI HQPVUKG KVCNKEU HQPVEQNQT TGF DNKPM FQEWOGPVYTKVG O[9QTF #VT[DWV DNKPM TWLPQYC YKúEGL UVQUWPMQYQ RT[YQKV[EJ RTQLGMVÎY 999 PK LCMKMQNYKGM KPP[ K QUVC Y MQ EW Y[GNKOKPQYCP[ Q QDGLTGPKC VGL KT[VWLæEGL OGVQF[ RQVTGDPC LGUV UVCTUC RTGINæFCTMC UETKRV JGCF DQF[ DI%QNQT RGCEJRWHH DQF[ JVON Proszę zwrócić uwagę, e po zdefiniowaniu obiektu za pomocą konstruktora 5VTKPI mo liwe jest zapisanie poni szej instrukcji z pięcioma metodami dołączonymi do sa- mego obiektu łańcuchowego: O[9QTF O[9QTFUWDUVTKPI HQPVUKG KVCNKEU HQPVEQNQT TGF DNKPM Na końcu skryptu obiekt łańcuchowy O[9QTF posiada właściwości UWDUVTKPI (podłań- cuch), HQPVUKG (rozmiar czcionki), KVCNKEU (pochylenie), HQPVEQNQT (kolor czcionki) — czerwony oraz DNKPM — czcionka migająca. Jak widzimy, u ywając łańcucha jako obiektu mo emy kontrolować jego wygląd na stronie. Proszę nigdy nie używać migających czcionek w prawdziwych projektach! Wywołują one oczopląs — a poza tym działają tylko w Netscape Navigatorze. Metody łańcuchowe mo emy podzielić na trzy kategorie, jak pokazano w tabeli 8.1. Metody znacznikowe Metody znacznikowe skojarzone z łańcuchami odpowiadają znacznikom języka HTML. Na przykład metoda DQNF jest skojarzona ze znacznikiem D pogrubiającym czcion- kę. Analogicznie HQPVEQNQT i HQPVUKG są skojarzone ze znacznikiem (QPV . Uwa- ga projektanci — proszę uwa ać z tymi metodami. Z powodu mo liwości i elastycz- ności kaskadowych arkuszy stylów (CSS) wiele znaczników, takich jak (QPV , nie jest ju zalecanych. Jeśli przyzwyczaimy się zbytnio do u ywania metod znaczniko- wych w JavaScripcie, mo emy pewnego dnia zostać daleko w tyle z przestarzałą
  • 11. 142 Część II ♦ JavaScript w stronach WWW Tabela 8.1. Typy metod łańcuchowych Znaczniki Czynności Wyra enia regularne #PEJQT EJCT#V OCVEJ $KI EJCT%QFG TGRNCEG $NKPM V[NMQ Y 00 EQPECV UGCTEJ $QNF KPFGZ1H URNKV (KZGF NCUV+PFGZ1H (QPVEQNQT UNKEG (QPVUKG UWDUVTKPI +VCNKEU UWDUVT .KPM VQ.QYGT%CUG 5OCNN VQ7RRGT%CUG 5VTKMG 5WD 5WR technologią. Proszę przejrzeć rozdział 12., „Dynamiczny HTML”, i zobaczyć, co mo- emy osiągnąć, łącząc CSS z JavaScriptem. Przy okazji zobaczymy, ile wbudowa- nych metod mo emy dodać do łańcucha. Metody czynnościowe U ywam terminu „metody czynnościowe” do oznaczenia metod przekształcających skład łańcucha lub znajdujących informacje o łańcuchach, lecz nie u ywających wy- ra eń regularnych. Metody te są podstawowymi narzędziami pracy z łańcuchami. Najwa niejsze z nich zajmują się identyfikacją podłańcuchów i znaków. UWDUVTKPI RQEæVGMMQPKGE — podaje pozycję liczbową w łańcuchu pierwszego i ostatniego znaku podłańcucha, który ma zostać wydzielony z łańcucha. EJCT#V P — podaje wartość pozycji liczbowej znaku w łańcuchu. EJCT%QFG#V P — podaje wartość pozycji znaku w łańcuchu i zwraca wartość tego znaku (n) w Unicode (ASCII). KPFGZ1H UWDUVT — podaje fragment (podłańcuch) do znalezienia w łańcuchu i zwraca pozycję pierwszego znaku podłańcucha. NCUV+PFGZ1H działa tak samo, lecz zaczyna od końca łańcucha. VQ7RRGT%CUG i VQ.QYGT%CUG — przekształca łańcuch na same wielkie lub same małe litery. Poni szy skrypt daje przykład wykorzystania wszystkich powy szych metod, poza indeksowaniem: stringMethod2.html JVON JGCF VKVNG /GVQFC VKVNG
  • 12. Rozdział 8. ♦ Programowanie obiektowe w języku JavaScript... 143 UETKRV NCPIWCIG ,CXC5ETKRV XCT SWQVG PGY 5VTKPI 1PC Y[TC C C YU[UVMKG OQ NKYG GOQELG XCT FGZ SWQVGVQ.QYGT%CUG UWDUVTKPI XCT VGTKV[ SWQVGVQ7RRGT%CUG EJCT#V FGZ FGZEQPECV VGTKV[ FQEWOGPVYTKVG FGZ UETKRV JGCF DQF[ DI%QNQT NCXGPFGTDNWUJ DQF[ JVON Metody wyrażeń regularnych Ostatnim typem metod łańcuchowych są metody u ywające wyra eń regularnych. Jak intensywnie będziemy korzystać z tych metod, to ju zale y od konkretnego projektu, lecz wyra enia regularne są doskonałym narzędziem do pracy z łańcuchami. Propo- nuję wrócić do opisu wyra eń regularnych w rozdziale 3., „Dane i zmienne”, lub przej- rzeć opis CGI i języka Perl w rozdziale 16., „CGI i Perl”, gdzie zostały omówione bar- dziej szczegółowo ró ne formaty wyra eń regularnych. Czterema metodami wyra eń regularnych dla obiektu łańcuchowego są: OCVEJ TGIGZR — zwraca podciąg opisany wyra eniem regularnym lub wartość PWNN. TGRNCEG TGIGZRUWDUVKVWVG —zastępuje wyra enie regularne łańcuchem UWDUVKVWVG. UGCTEJ TGIGZR — znajduje pozycję początkową łańcucha opisanego wyra eniem regularnym. URNKV TGIGZR — ta metoda działa zarówno na łańcuchach, jak i na wyra eniach regularnych (JavaScript 1.2). Łańcuch jest dzielony w miejscu wyra enia regularnego (mo liwe, e w wielu miejscach), człon z wyra enia regularnego jest odrzucany, zaś łańcuch jest przekształcany w tablicę, której elementy oddzielane są poło eniem odrzuconego podłańcucha. Poni szy skrypt przedstawia sposób działania wszystkich czterech metod. Proszę zwró- cić uwagę, jak metoda 5VTKPIUGCTEJ GZR została u yta w metodzie 5VTKPIUNKEG w celu znalezienia składnika z wyra enia regularnego. Wynik działania skryptu przed- stawia rysunek 8.1. srngRegExpMeth.html JVON JGCF UV[NG V[RG VGZVEUU DQF[ ] HQPVHCOKN[ XGTFCPC DCEMITQWPFEQNQT GE _ J ] EQNQT FE
  • 13. 144 Część II ♦ JavaScript w stronach WWW Rysunek 8.1. Metody wyra eń regularnych skojarzone z obiektem łańcuchowym są efektywnym dodatkiem do narzędzi formatujących dostępnych w JavaScripcie DCEMITQWPFEQNQT CH _ UV[NG VKVNG /GVQF[ Y[TCGP TGIWNCTP[EJ Y NCPEWEJCEJ VKVNG UETKRV NCPIWCIG ,CXC5ETKRV UVTKPIOCVEJ XCT OCVEJ6JKU CITCL VQ LGUEG TC 5CO XCT UVTKPIGT OCVEJ6JKUOCVEJ UCOK UVTKPITGRNCEG XCT TGRNCEG6JKU 6GP UMT[RV LGUV QUCFQP[ Y Lú[MW ,CXC XCT UVTKPIGT TGRNCEG6JKUTGRNCEG ,CXCI *6/. UVTKPIUGCTEJ XCT UGCTEJ6JKU YYYUCPFNKIJVEQO XCT UVTKPIGT UGCTEJ6JKUUNKEG UGCTEJ6JKUUGCTEJ EQO UVTKPIURNKV XCT URNKV6JKU 1PC OC FYC RQYC PG RTQDNGO[ XCT UVTKPIGT URNKV6JKUURNKV FYC RQYC PGK XCT FKURNC[ J /GVQF[ Y[TC G TGIWNCTP[EJ Y QDKGMVCEJ C EWEJQY[EJJ FKURNC[ OCVEJ6JKU UVCLG UKú UVTKPIGT DT FKURNC[ TGRNCEG6JKU UVCLG UKú UVTKPIGT DT FKURNC[ UGCTEJ6JKU UVCLG UKú RQOQEæ UVTKPIUNKEG UVTKPIGT å DT FKURNC[ URNKV6JKU UVCLG UKú VCDNKEæ UVTKPIGT=? UVTKPIGT=? å DT XCT UJQY1HH PGY 5VTKPI FKURNC[ FQEWOGPVYTKVG UJQY1HHHQPVEQNQT UETKRV JGCF DQF[ DQF[ JVON
  • 14. Rozdział 8. ♦ Programowanie obiektowe w języku JavaScript... 145 Ró ne metody wyra eń regularnych w obiekcie łańcuchowym mogą zaoszczędzić nam nieco czasu na znajdowanie pozycji w łańcuchach. Zamiast szukania podłańcucha lub pozycji za pomocą pętli, warto pomyśleć o zastosowaniu metod wyra eń regularnych. Wykorzystanie obiektu Date Obiekt CVG posiada 40 metod i 9 argumentów. Jednak e wiele z tych metod mo e nie być u ywanych zbyt często (np. dotyczące czasu Greenwich), zaś większość metod po- biera lub ustawia jedno i to samo. Mimo to Czytelnik powinien zapoznać się z meto- dami i argumentami obiektu CVG. Tabela 8.2 zawiera ich zestawienie. Tabela 8.2. Właściwości obiektu Date Argumenty /KNKUGEQPFU Liczba milisekund od 1 stycznia 1970. CVGUVTKPI Określona data i czas w formacie łańcuchowym (czas jest opcjonalny). ;GCT Rok w zapisie czterocyfrowym (np. 2002). /QPVJ Miesiąc numerowany od 0 do 11 (styczeń ma nr 0). C[ Dzień miesiąca numerowany od 1 do 31. (Kto wie, dlaczego dni zaczynają się od 1 a wszystko inne od 0?). *QWTU Godzina dnia od 0 do 23. /KPWVGU Liczba minut od 0 do 59. 5GEQPFU Liczba sekund od 0 do 59. /U Liczba milisekund od 0 do 999. Metody Większość zwracanych wartości jest definiowanych przez datę w obiekcie CVG, nawet jeśli nie jest to bie ąca data i czas. IGVCVG Zwraca dzień miesiąca. IGVC[ Zwraca dzień tygodnia. IGV(WNN;GCT Zwraca bie ący rok z obiektu CVG. IGV*QWTU Zwraca godziny. IGV/KNKUGEQPFU Zwraca liczbę milisekund od 01.01.1970 do daty określonej w obiekcie. IGV/KPWVGU Zwraca minuty. IGV/QPVJ Zwraca miesiąc w postaci liczby całkowitej. IGV5GEQPFU Zwraca sekundy. IGV6KOG Zwraca aktualną godzinę w milisekundach. IGV6KOGQPG1HHUGV Zwraca ró nicę w strefach czasowych pomiędzy czasem lokalnym i uniwersalnym (UTC). IGV76%CVG Zwraca dzień miesiąca w UTC. IGV76%C[ Zwraca dzień tygodnia w UTC. IGV76%(WNN;GCT Zwraca bie ący rok w UTC. IGV76%*QWTU Zwraca godzinę w UTC. IGV76%/KNKUGEQPFU Zwraca liczbę milisekund od 01.01.1970 do bie ącej UTC.
  • 15. 146 Część II ♦ JavaScript w stronach WWW Tabela 8.2. Właściwości obiektu Date (ciąg dalszy) Metody IGV76%/KPWVGU Zwraca minuty w UTC. IGV76%/QPVJ Zwraca miesiąc w UTC w postaci liczby całkowitej. IGV76%5GEQPFU Zwraca sekundy w UTC. IGV;GCT Zwraca pole roku; metoda nie zalecana (zastąpiona przez IGV(WNN;GCT ). UGVCVG Ustawia dzień miesiąca. UGV(WNN;GCT Ustawia rok. UGV*QWTU Ustawia godzinę. UGV/KNKUGEQPFU Ustawia milisekundy. UGV/KPWVGU Ustawia minuty. UGV/QPVJ Ustawia miesiąc jako liczbę całkowitą. UGV5GEQPFU Ustawia sekundy. UGV6KOG Ustawia bie ący czas w milisekundach. UGV76%CVG Ustawia dzień miesiąca w UTC. UGV76%(WNN;GCT Ustawia rok w UTC. UGV76%*QWTU Ustawia godzinę w UTC. UGV76%/KNKUGEQPFU Ustawia pole milisekund w UTC. UGV76%/KPWVGU Ustawia minuty w UTC. UGV76%/QPVJ Ustawia miesiąc w UTC jako liczbę całkowitą. UGV76%5GEQPFU Ustawia sekundy w UTC. UGV;GCT Ustawia rok; metoda nie zalecana (zastąpiona przez UGV(WNN;GCT ). VQ)/65VTKPI Konwertuje datę na łańcuch, u ywając UTC lub GMT. VQ.QECNG5VTKPI Konwertuje datę i czas. VQ76%5VTKPI Konwertuje na łańcuch, stosując UTC. XCNWG1H Konwertuje na milisekundy. Obiekt CVG jest łatwy w u yciu, mimo tak oszałamiającego zbioru opcji. Jednak e w większości przypadków obiekt ten jest stosowany do porównania przeszłej lub obecnej daty z aktualną albo po prostu do wyświetlania daty na ekranie. Za pomocą zegara UTC mo na tworzyć ciekawe zegary ogólnoświatowe i inne interesujące zda- rzenia (events) związane z upływem czasu, więc nie powinniśmy zapominać o metodach dla CVG podczas umieszczania daty i czasu na stronach WWW. Poni szy skrypt przed- stawia przykład, jak obiekt CVG mo e posłu yć do przypominania o Walentynkach: date.html JVON JGCF UETKRV NCPIWCIG ,CXC5ETKRV XCT 0QYCVG PGY CVG XCT CVG0QY 0QYCVGIGVCVG XCT /QPVJ0QY 0QYCVGIGV/QPVJ
  • 16. Rozdział 8. ♦ Programowanie obiektowe w języku JavaScript... 147 #D[ PCNG è 9CNGPV[PMK RQVTGDP[ LGUV OKGUKæE K FKG /KGUKæEG CE[PCLæ UKú QF YKúE NWV[ OC PWOGT PK NKEQPG Uæ QF + PKG CRQOPKL Q RTCYFKYGL MCTVEG YCNGPV[PMQYGL KH CVG0QY /QPVJ0QY ] CNGTV KUKCL 9CNGPV[PMK _ GNUG ] CNGTV CEGMCL FQ NWVGIQ PKGRQRTCYP[ TQOCPV[MW _ UETKRV JGCF DQF[ DIEQNQT RKPM DQF[ JVON Po co nam programowanie obiektowe? To wprowadzenie do programowania obiektowego ma zachęcić do myślenia o ele- mentach JavaScriptu jako obiektach, ich właściwościach i metodach. W większości zastosowań skrypty w JavaScripcie są krótkie; wprawdzie dobra organizacja progra- mowania jest wa na nawet w krótkich skryptach, lecz programowanie obiektowe nie jest w nich niezbędne. Gdy jednak zaczniemy pracować w większych zespołach nad projektami WWW i skrypty zaczną zwiększać objętość, programowanie obiektowe zacznie być coraz wa niejsze. Poniewa zachęca ono do tworzenia modułowych jed- nostek programu, jednostki te mo emy udostępniać innym pracownikom zespołu i wy- korzystywać ponownie, co oznacza, e nie będziemy musieli wywa ać otwartych drzwi za ka dym razem, gdy siądziemy do pracy nad skryptem. Dla projektanta witryn WWW idea modułowych elementów projektu, zdatnych do ponownego wykorzystania, jest bardziej oczywista i intuicyjna. Programowanie obiek- towe jest podobne. Jeśli potrafimy napisać zło ony fragment kodu w postaci modułu, wówczas następnym razem, gdy taki sam kod będzie potrzebny, będziemy mogli albo nieco zmodyfikować kod (np. zmienić wartości argumentów), albo u yć tego samego modułu w innym miejscu. Dzięki temu czas poświęcony na napisanie kodu zwróci się. Model obiektów dokumentu W modelu obiektów dokumentu (DOM — Document Object Model) JavaScriptu pod- stawowym dokumentem jest strona HTML-a. Jak ju powiedzieliśmy, obiekt YKPFQY, który zawiera ramki, jest na szczycie hierarchii przeglądarki WWW. Jednak e obiekt QEWOGPV zawiera właściwości, z których informacje są wykorzystywane przez Java- Script. Aby odrzeć DOM z tajemniczości, pomyślmy o nim jak o obiekcie QEWOGPV razem z wszystkimi właściwościami, w tym z metodami. Instrukcje, takie jak FQEW OGPVYTKVG , składają się z obiektu (FQEWOGPV) i właściwości lub metody (YTKVG ), które są częścią modelu. Upraszczając nieco do przesady, mo emy powiedzieć, e mo- del obiektów dokumentu JavaScript jest sumą wszystkich właściwości i metod obiektu QEWOGPV, łącznie z tablicami automatycznie generowanymi na stronie HTML, oraz sposobów dostępu do tych obiektów w JavaScripcie.
  • 17. 148 Część II ♦ JavaScript w stronach WWW Właściwości obiektu Document Patrząc na właściwości obiektu QEWOGPV, mo emy odczuć coś w rodzaju déjà vu z pod- rozdziału poświęconego obiektowi 5VTKPI z wcześniejszej części tego rozdziału. Zo- baczymy pewne podobieństwa, lecz w większości przypadków właściwości (z pomi- nięciem metod) składające się na DOM są unikatowe dla obiektu QEWOGPV. Tabela 8.3 przedstawia właściwości tego obiektu. Tabela 8.3. Właściwości obiektu Document Nazwa właściwości Skojarzona właściwość CNKPM%QNQT Aktywny kolor wybranego łącza. CPEJQTU=VCDNKEC? Ka de zaczepienie na stronie HTML jest elementem tablicy. CRRNGVU=VCDNKEC? Ka dy aplet na stronie HTML jest elementem tablicy. DI%QNQT Kolor tła dokumentu. EQQMKG Pliki tekstowe, które JavaScript mo e zapisywać i odczytywać. FQOCKP Właściwość zabezpieczeń, która mo e być wykorzystana przez dwa lub więcej serwerów WWW, aby zmniejszyć ograniczenia na interakcje pomiędzy stronami WWW. GODGFU=VCDNKEC? Ka dy obiekt osadzony jest elementem tablicy GODGFU=?. (działa równie Przykładami obiektów osadzonych są rozszerzenia plug-in RNWIKPU=VCDNKEC?) i pliki .swf (patrz rozdział 18., „Flash ActionScript i JavaScript”, w którym omówiono osadzone pliki Flash w JavaScripcie). HI%QNQT Kolor tekstu. HQTOU=VCDNKEC? Ka dy formularz na stronie HTML jest elementem tablicy, a ka dy obiekt w formularzu jest elementem elementu HQTO (formularz). Rozdział 11., „Formularze”, szczegółowo omawia formularze w JavaScripcie. KOCIGU=VCDNKEC? Ka dy obraz na stronie HTML jest elementem tablicy KOCIGU=? (tablica ta będzie omówiona szczegółowo w dalszej części rozdziału). NCUV/QFKHKGF Data ostatniej modyfikacji w formacie łańcuchowym. NKPM%QNQT Początkowy kolor łącza przed odwiedzeniem strony (domyślnie niebieski). NKPMU=VCDNKEC? Ka de łącze jest elementem tablicy, gdy pojawia się w dokumencie. NQECVKQP Właściwość URL; obecnie podawana jako 74. (patrz pozycja 74. w dalszej części tabeli). TGHGTGT Poprzednia strona, która zawiera łącze do bie ącej. VKVNG Tytuł dokumentu. 74. Nowa wersja właściwości lokalizacji podająca URL załadowanej strony. XNKPM%QNQT Kolor odwiedzonego łącza. Poni szy skrypt przedstawia działanie niektórych z właściwości dokumentu. Obiekt HQTO jest tablicą, zaś funkcja JavaScriptu adresuje jedyny obiekt tekstowy jako ele- ment tablicy formularzy.
  • 18. Rozdział 8. ♦ Programowanie obiektowe w języku JavaScript... 149 bgcolor.html JVON JGCF UETKRV NCPIWCIG ,CXC5ETKRV HWPEVKQP OGUUCIG JWG ] FQEWOGPVHQTOU=?GNGOGPVU=?XCNWGJWG _ 0GVUECRG PCLY[TC PKGL CE[PC NKE[è GNGOGPV[ QF COKCUV QF GTC 9 GHGMEKG YU[UVMKG QFYQ CPKC FQ FQEWOGPVHQTOU=?GNGOGPVU=? RQYQFWLæ CCFTGUQYCPKG RT[EKUMW KYPG UETKRV VKVNG [PCOKEPG OKCP[ MQNQTWVKVNG JGCF DQF[ * W C EEKQPMC J HQTO KPRWV V[RGDWVVQP XCNWG %GTYQP[ QP%NKEM FQEWOGPVDI%QNQT TGF åQP/QWUGQYP OGUUCIG TGF KPRWV V[RGDWVVQP XCNWG KGNQP[ QP%NKEM FQEWOGPVDI%QNQT ITGGP åQP/QWUG1XGT OGUUCIG ITGGP KPRWV V[RGDWVVQP XCNWG 0KGDKGUMK QP%NKEM FQEWOGPVDI%QNQT DNWG åQP/QWUG/QXG OGUUCIG DNWG DT KPRWV V[RGDWVVQP XCNWG Î VC EEKQPMC QP%NKEM FQEWOGPVHI%QNQT [GNNQY DT KPRWV V[RGDWVVQP XCNWG %GINCUVC EEKQPMC QP%NKEM FQEWOGPVHI%QNQT HKTGDTKEM R KPRWV V[RGVGZV HQTO DQF[ JVON Innymi wa nymi właściwościami obiektu QEWOGPV są obiekty CTTC[ (tablica), HQTO (formularz) i KOCIG (obraz). Formularze będą omówione szczegółowo w rozdziale 11., zaś tablice były opisane w rozdziale 3. Wa nym obiektem tablicy dokumentu, który warto tu przeanalizować dokładniej, jest właściwość KOCIG (obraz) jako obiekt. Obiekty obrazów Obiekt KOCIG jest jednym z najbardziej interesujących w HTML-u i JavaScripcie. Gdy umieszczamy kolejno obrazy na stronie HTML, korzystając ze znacznika KOI , umiesz- czamy obrazy w tablicy. Nie deklarujemy tablicy, lecz tworzymy ją przez umieszcza- nie obrazów na ekranie. Tablica ta budowana jest następująco: FQEWOGPVKOCIGU=? FQEWOGPVKOCIGU=? FQEWOGPVKOCIGU=? Na stronie HTML te same obrazy wyglądałyby tak: KOI UTE ITCHKMC#IKH KOI UTE ITCHKMC$IKH KOI UTE HQVQITCHKC#IKH
  • 19. 150 Część II ♦ JavaScript w stronach WWW Jedną z właściwości obiektu KOCIG, jakie mo emy zmieniać dynamicznie w JavaScrip- cie, jest wartość UTE. Następny skrypt wykorzystuje obrazy GIF o rozmiarze jednego piksela przeskalowane do pionowych pasków. Aby utworzyć jednopikselowy GIF, wy- starczy otworzyć program graficzny u ywany do obróbki GIF-ów (np. Photoshop lub Fireworks) i zdefiniować rozmiar obszaru roboczego 1×1 piksel, a następnie powięk- szyć lupą do rozmiarów pozwalających na pracę z obrazem. Teraz proszę nadać ob- szarowi roboczemu kolor o jednej z poni szych wartości szesnastkowych: CEH EGE GCD HHGD CDEC E FGDG Proszę zapisać ka dy jednopikselowy GIF pod nazwą od c1.gif do c7.gif. Poni szy skrypt mówi, gdzie ka dy rysunek jest umieszczony i pokazuje, e JavaScript po- zwala adresować tablicę obrazów przez adresy w tablicy od 0 do 6. Skrypt adresuje obraz jako część obiektu QEWOGPV w sposób następujący: FQEWOGPVKOCIGU=?UTE PCYC1DTCWUTE PCYC1DTCWUTE jest częścią obiektu KOCIG utworzonego w JavaScripcie. Przy two- rzeniu obiektu URL (lub nazwa pliku) obrazu źródłowego jest następujący: PCYC1DTCWUTE PCYC4[UWPMWIKH Poniewa JavaScript potrafi jedynie zmieniać dynamicznie wartość UTE w FQEWOGPV KOCIGU=P?UTE, nowa wartość musi być zdefiniowana jako UTE, a nie jako sama nazwa obrazu lub URL. images.html JVON JGCF VKVNG 6CDNKEC QDTCÎYVKVNG UETKRV NCPIWCIG ,CXC5ETKRV HWPEVKQP EJCPIG+V ] XCT E PGY +OCIG XCT P FQEWOGPVHQTOU=?JWGXCNWG P RCTUG+PV P EUTE EIKH FQEWOGPVKOCIGU=P?UTE EUTE _ 0KG YRKU[YCè YCTVQ EK YKúMU[EJ PK UETKRV JGCF DQF[ VCDNG DQTFGT EQNU YKFVJ JGKIJV DIEQNQT EEEEEE VT VF CNKIPEGPVGT XCNKIPEGPVGT KOI PCOG E UTE EIKH DQTFGT JGKIJV åYKFVJ VF VF CNKIPEGPVGT XCNKIPEGPVGT KOI PCOG E UTE EIKH DQTFGT JGKIJV åYKFVJ VF VF CNKIPEGPVGT XCNKIPEGPVGT KOI PCOG E UTE EIKH DQTFGT JGKIJV åYKFVJ VF VF CNKIPEGPVGT XCNKIPEGPVGT KOI PCOG E UTE EIKH DQTFGT JGKIJV åYKFVJ VF VF CNKIPEGPVGT XCNKIPEGPVGT KOI PCOG E UTE EIKH DQTFGT JGKIJV åYKFVJ VF
  • 20. Rozdział 8. ♦ Programowanie obiektowe w języku JavaScript... 151 VF CNKIPEGPVGT XCNKIPEGPVGT KOI PCOG E UTE EIKH DQTFGT JGKIJV åYKFVJ VF VF CNKIPEGPVGT XCNKIPEGPVGT KOI PCOG E UTE EIKH DQTFGT JGKIJV åYKFVJ VF VT VCDNG EGPVGT HQTO KPRWV V[RGVGZV PCOG JWG UKG R KPRWV V[RGDWVVQP XCNWG -NKMPKL CD[ OKGPKè MQNQT QDTCW QP%NKEM EJCPIG+V HQTO EGPVGT DQF[ JVON Rysunek 8.2 przedstawia słupki o ró nych kolorach, tak jak będą wyglądać na ekra- nie, oraz pole do wpisywania wartości elementu tablicy obrazów. Rysunek 8.2. Strona HTML zawierająca tablicę obrazów — JavaScript mo e adresować tablicę i zmieniać wartości src Wprawdzie inne właściwości obiektu QEWOGPV, jak np. tablice NKPMU=? i CPEJQTU=?, równie mogą być adresowane, lecz dla projektanta najwa niejsza jest właściwość KOCIGU=?. Wstępne ładowanie obrazów Gdy projektujemy stronę, w której jeden obraz jest zastępowany innym, zamiana obra- zów musi być natychmiastowa, a od u ytkownika nie mo emy wymagać cierpliwego oczekiwania na załadowanie nowego obrazu. Na szczęście w JavaScripcie wstępne ładowanie obrazów (do pamięci podręcznej) jest proste. Najpierw definiowany jest nowy obiekt KOCIG, a następnie definiowane jest źródło nowego obiektu, jak pokazano poni ej:
  • 21. 152 Część II ♦ JavaScript w stronach WWW XCT EKGMCY[1DTCGM PGY +OCIG EKGMCY[1DTCGMUTE PQYC(QVMCLRI I to ju wszystko. Obraz znajduje się teraz w pamięci podręcznej przeglądarki — zo- stał wstępnie załadowany. Pamiętając, e obiekty obrazów mogą być traktowane jak tablica, mo emy umieścić wstępnie załadowany obiekt w zdefiniowanym w HTML-u miejscu na obraz. Na przykład, jeśli mamy następujący wiersz w HTML-u: KOI UTE HKTUV2KZLRI PCOG HKTUV7R wówczas mo emy zastąpić go zbuforowanym obrazem za pomocą poni szego wiersza: FQEWOGPVKOCIGU=?UTE EKGMCY[1DTCGMUTE KOCIGU=? LGUV RKGTYU[O QDTCGO lub: FQEWOGPVHKTUV7RUTE EKGMCY[1DTCGMUTE Nie istnieje ograniczenie na liczbę obrazów, które mo emy załadować do pamięci podręcznej, lecz proszę pamiętać, e pobieranie większej liczby obrazów trwa dłu ej. Ponadto podczas procesu ładowania wstępnego mo emy zawrzeć równie wysokość i szerokość obrazów. Aby dokonać płynnego zastąpienia, obiekty oryginalny i zastę- pujący powinny mieć te same rozmiary. Na przykład, w poni szy sposób mo na do- brze dopasować obraz buforowany przez JavaScript z obrazem z HTML-a: KOI UTE HKTUV#TV JGKIJV YKFVJ PCOG RKECUUQ XCT GZR#TV PGY +OCIG Wstępnie załadowany obraz będzie miał takie same wymiary jak obraz załadowany przez HTML. Związek z DOM W stronie HTML struktura HTML-a zawiera elementy i atrybuty. JavaScript traktuje elementy, np. obrazy i formularze, jak obiekty, a atrybuty elementów jak właściwości. Na przykład, tabela 8.4 przedstawia atrybuty znacznika KOI w HTML-u: Tabela 8.4. Atrybuty elementu img w HTML-u UTE CNV NQPIFGUE CNKIP JGKIJV YKFVJ DQTFGT JURCEG XURCEG WUGOCR KUOCR W JavaScripcie element +/) jest traktowany jak obiekt KOCIGU=?, a wszystkie atry- buty elementu +/) jak właściwości obiektu KOCIGU=?. JavaScript potrafi odczytywać wszystkie właściwości obrazu, lecz mo e zmienić jedynie właściwość UTE. Podobnie jak wszystkie pozostałe elementy HTML-a i ich atrybuty pojawiające się na stronie (w dokumencie), stanowią one element składowy modelu obiektów dokumentu (DOM). Stosunek JavaScriptu do obiektów dokumentu jest takie jak elementów HTML-a do właściwości adresowanego obiektu. Gdy więc struktura strony wynika z elemen- tów i atrybutów HTML-a, zachowanie strony bierze się ze zdolności JavaScriptu do dynamicznych zmian określonych atrybutów (właściwości) elementów (obiektów).
  • 22. Rozdział 8. ♦ Programowanie obiektowe w języku JavaScript... 153 Podsumowanie Obiekty są podstawą JavaScriptu, a zrozumienie modelu obiektów dokumentu w Java- Scripcie w stosunku do HTML-a jest niezbędne do efektywnego wykorzystania roz- licznych obiektów, jakie mo emy znaleźć na stronie WWW. Programowanie obiek- towe miało w zało eniach pomóc w opanowaniu ogromnych wieloprogramowych projektów, w których trzeba było koordynować tysiące wierszy kodu. W typowych zadaniach, z jakimi spotyka się większość projektantów, potrzeba programowania obiektowego nie polega na konieczności zapanowania nad gigantycznym projektem, poniewa większość JavaScriptu zajmuje się prostymi zadaniami wykonywanymi na pojedynczych stronach. Jednak e nawet drobne postępy w kierunku programowania obiektowego pomogą lepiej zrozumieć zjawiska zachodzące na naszej stronie WWW i łatwiej osiągać zało one efekty. Projektant stron WWW powinien być w stanie wyobrazić sobie wyniki działania dy- namicznej strony WWW, a następnie o ywić stronę za pomocą JavaScriptu. Poznając zało enia programowania obiektowego oraz pojęcia obiektów, właściwości i metod w JavaScripcie, zrobiliśmy olbrzymi krok w tym kierunku. Proszę nie uwa ać progra- mowania obiektowego za cię ar, lecz raczej za okazję do lepszego zrozumienia pro- duktów własnej wyobraźni. Analogicznie, proszę nie traktować programowania obiek- towego jako ograniczeń własnej kreatywności. Czasami Czytelnik nie będzie w stanie znaleźć rozwiązania problemu z u yciem programowania obiektowego, lecz do roz- wiązania mo emy dojść, wykorzystując zmienne i instrukcje nie zawierające obiek- tów łączonych z właściwościami i metodami. Za to nie grozi kara więzienia! Robiąc drobne kroczki w stronę programowania obiektowego, w końcu nauczymy się wyko- rzystywać w pełni jego mo liwości.