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

                           SPIS TREœCI
                                         JavaScript. Rozmówki
                                         Autor: Christian Wenz
           KATALOG KSI¥¯EK               T³umaczenie: Leszek Sagalara
                                         ISBN: 978-83-246-0874-4
                                         Tytu³ orygina³u: JavaScript Phrasebook
                      KATALOG ONLINE     Format: B5, stron: 288

       ZAMÓW DRUKOWANY KATALOG


              TWÓJ KOSZYK                             Podrêczny s³ownik najwa¿niejszych poleceñ jêzyka JavaScript
                                             • Podstawowe operacje w JavaScript
                    DODAJ DO KOSZYKA         • Tworzenie interaktywnych witryn za pomoc¹ technologii AJAX
                                             • Wspó³praca JavaScript z innymi technologiami (CSS, DOM, DHTML)

         CENNIK I INFORMACJE
                                         Od pewnego czasu jêzyk JavaScript prze¿ywa odrodzenie i zyskuje zas³u¿on¹
                                         popularnoœæ. Wynika to przede wszystkim z rozwoju technologii AJAX, która umo¿liwia
                                         tworzenie reaktywnych witryn internetowych i bazuje w³aœnie na tym jêzyku. JavaScript
                   ZAMÓW INFORMACJE      pozwala na przeprowadzanie wielu przydatnych operacji niewykonalnych w zwyk³ym
                     O NOWOœCIACH        jêzyku HTML, na przyk³ad kontrolowane otwieranie nowych okien, sprawdzanie
                                         poprawnoœci danych w formularzach czy dynamiczne modyfikowanie rysunków. £atwa
                       ZAMÓW CENNIK      sk³adnia oraz szeroki zakres wykonywanych zadañ sprawi³y, ¿e JavaScript jest jednym
                                         z najpopularniejszych jêzyków skryptowych wykonywanych po stronie przegl¹darki.

                 CZYTELNIA               „JavaScript. Rozmówki” to zwiêz³y i przystêpny przewodnik omawiaj¹cy popularne
                                         problemy, pojawiaj¹ce siê w czasie pracy z tym jêzykiem, oraz podsuwaj¹cy szybkie
          FRAGMENTY KSI¥¯EK ONLINE       i skuteczne ich rozwi¹zania. Korzystaj¹c z niego, nauczysz siê u¿ywaæ zarówno
                                         podstawowych, jak i zaawansowanych funkcji tego jêzyka. Dowiesz siê, jak do stron
                                         dodawaæ grafikê, animacje, treœci multimedialne oraz jak zastosowaæ JavaScript do
                                         tworzenia witryn za pomoc¹ technologii AJAX. Poznasz mo¿liwoœci wspó³pracy jêzyka
                                         JavaScript z innymi technologiami, takimi jak CSS, DOM czy DHTML, a tak¿e opanujesz
                                         manipulowanie cookies, formularzami, oknami czy ramkami.
                                             • Podstawowe operacje w JavaScript
                                             • Dodawanie grafiki, animacji i treœci multimedialnych
                                             • Praca ze stylami CSS
                                             • Obs³uga cookies
                                             • JavaScript w DHTML
                                             • Manipulowanie modelem DOM
Wydawnictwo Helion                           • Obiekty i zdarzenia w JavaScript
ul. Koœciuszki 1c                            • Podstawy technologii AJAX
44-100 Gliwice
                                             • Obs³uga formularzy
tel. 032 230 98 63
                                             • Korzystanie z us³ug Web Service
e-mail: helion@helion.pl
                                                          Dziêki zwiêz³ym rozmówkom w b³yskawicznym tempie
                                                           usystematyzujesz swoj¹ wiedzê o jêzyku JavaScript
O autorze ............................................................................ 9

   Wstęp ............................................................................... 11

1 Podstawy JavaScriptu ....................................................... 15
  JavaScript (i odrobina historii) ................................................ 15
  Konfiguracja systemu testowego ............................................ 18
  Konfiguracja przeglądarek ...................................................... 20
  Wstawianie kodu JavaScript ................................................... 21
  Stosowanie zewnętrznych plików JavaScript .......................... 24
  Wczytywanie plików JavaScript .............................................. 24
  Pseudoadresy URL ................................................................. 26
  Wykonywanie kodu JavaScript za pomocą obsługi zdarzeń .... 27
  Obsługa przeglądarek bez obsługi JavaScriptu ....................... 28

2 Podstawowe zwroty .......................................................... 31
  Wykrywanie przeglądarki ....................................................... 31
  Sprawdzanie możliwości przeglądarki .................................... 34
  Zapobieganie buforowaniu .................................................... 35
  Przekierowania ...................................................................... 36
  Odświeżanie strony ................................................................ 37
Spis treści


        Tworzenie losowej liczby ........................................................ 37
        Data i czas ............................................................................. 38
        Wyszukiwanie przy użyciu wyrażeń regularnych ..................... 41
        Zamiana tekstu ...................................................................... 42
        Nawigacja po historii przeglądarki ......................................... 42
        Wyświetlanie daty modyfikacji strony ..................................... 43
        Pobieranie parametrów GET ................................................... 43
        Prośba o potwierdzenie przez użytkownika ............................ 45
        Prośba o dane użytkownika .................................................... 45

    3 Pliki graficzne i animacje ...................................................47
      Tworzenie przycisków aktywowanych myszą .......................... 48
      Wstępne wczytywanie rysunków ............................................ 51
      Animacje graficzne ................................................................. 53
      Rozciąganie plików graficznych .............................................. 55
      Przedstawienie stanu wczytywania strony
       za pomocą paska postępu .................................................... 57

    4 CSS .....................................................................................61
      Dostęp do stylów CSS ............................................................ 62
      Dostęp do klas CSS ................................................................ 64
      Dostęp do własnych arkuszy stylów ....................................... 65
      Dostęp do własnych reguł CSS ............................................... 66
      Ukrywanie zawartości witryny ................................................ 69
      Zastosowanie JavaScriptu do selektorów CSS ......................... 72
      Zmiana kursora myszy ............................................................ 74

    5 DOM i DHTML ....................................................................77
      DOM ...................................................................................... 77
      DHTML ................................................................................... 79
      Dostęp do określonych elementów ......................................... 80
      Dostęp do znaczników ........................................................... 81
4
Spis treści


   Określanie informacji o węźle ................................................ 83
   Usuwanie elementów ............................................................ 85
   Dodawanie elementów .......................................................... 87
   Tworzenie elementów tekstowych ......................................... 89
   Działania na atrybutach ......................................................... 90
   Klonowanie elementów ......................................................... 91
   Zastępowanie elementów ...................................................... 93
   Tworzenie listy wypunktowanej z danych JavaScript .............. 94
   Tworzenie tabeli z danych JavaScript ..................................... 95
   Zmiana fragmentów kodu HTML ............................................ 97
   Pozycjonowanie elementów ................................................... 98
   Poruszanie elementów ......................................................... 100
   Tworzenie „przyklejonego” paska nawigacyjnego ................ 102
   Wyskakujące okna reklamowe w technologii Flash .............. 104

6 Programowanie obiektowe i zdarzenia ........................... 107
  Tworzenie klas ..................................................................... 108
  Dostęp do członków klasy .................................................... 108
  Dziedziczenie klas ................................................................ 111
  Rozszerzanie wbudowanych obiektów JavaScript ................. 113
  Reagowanie na zdarzenia JavaScriptu .................................. 114
  Zdarzenia klawiatury ............................................................ 118
  Wysłanie formularza za pomocą klawisza Enter ................... 119
  Zdarzenia myszy .................................................................. 120

7 Cookies ............................................................................ 123
  Działanie cookies ................................................................. 124
  Umieszczanie cookies ........................................................... 126
  Odczytywanie cookies .......................................................... 128
  Określanie daty wygaśnięcia ................................................ 130


                                                                                             5
Spis treści


       Pozostałe opcje cookie ......................................................... 132
       Usuwanie cookies ................................................................ 134
       Sprawdzanie obsługi cookies ............................................... 135
       Zapis wielu informacji w jednym cookie ............................... 136

    8 Formularze .......................................................................139
      Formularze HTML i JavaScript ............................................... 140
      Dostęp do pól tekstowych .................................................... 142
      Dostęp do pól wyboru .......................................................... 143
      Dostęp do przycisków opcji .................................................. 144
      Dostęp do list wyboru .......................................................... 146
      Dostęp do listy wielokrotnego wyboru ................................. 148
      Wyłączanie elementów formularza ....................................... 151
      Wysyłanie formularza ........................................................... 154
      Zapobieganie wysłaniu formularza ....................................... 154
      Zapobieganie powtórnemu wysłaniu formularza .................. 156
      Przejmowanie aktywności pola ............................................ 158
      Zaznaczanie tekstu w polu ................................................... 159
      Wyczyszczenie pola tekstowego po jego kliknięciu ............... 161
      Sprawdzanie poprawności pól tekstowych ........................... 164
      Sprawdzanie pól wyboru ...................................................... 165
      Sprawdzanie przycisków opcji .............................................. 165
      Sprawdzanie list wyboru ...................................................... 167
      Automatyczne sprawdzanie poprawności formularza ........... 169
      Nawigacja za pomocą listy wyboru ...................................... 173
      Nawigacja hierarchiczna za pomocą listy wyboru ................. 174
      Przywracanie początkowego stanu
       zestawu przycisków opcji ................................................... 176
      Listy wyboru z aktualną datą ................................................ 177
      Listy wyboru z kontrolą poprawności daty ............................ 179


6
Spis treści


9 Okna i ramki .................................................................... 183
  Opcje okna .......................................................................... 185
  Otwieranie okna modalnego ................................................ 187
  Określanie rozdzielczości ekranu .......................................... 190
  Określanie rozmiaru okna ..................................................... 191
  Zmiana rozmiaru okna ......................................................... 192
  Zmiana położenia okna ........................................................ 194
  Otwarcie wyśrodkowanego okna wyskakującego ................. 195
  Otwarcie okna w trybie pełnoekranowym ............................ 197
  Otwarcie nowego okna w rogu ekranu ................................ 197
  Utworzenie mapy witryny .................................................... 199
  Zamykanie okna ................................................................... 200
  Wykrywanie blokowania wyskakujących okien .................... 202
  Jednoczesna zmiana zawartości dwóch ramek ..................... 206
  Pływające ramki ................................................................... 209

10 Web Services ................................................................... 211
   Tworzenie Web Service z PHP .............................................. 214
   Tworzenie Web Service z ASP.NET ....................................... 216
   Wywoływanie Web Service z Internet Explorera ................... 218
   Wywoływanie Web Service z przeglądarki Mozilla ............... 220
   Wywoływanie usługi Web Service ASP.NET
    z przeglądarki Mozilla ........................................................ 223

11 AJAX (i tematy pokrewne) ............................................... 227
   Inicjowanie aplikacji AJAX .................................................... 229
   Wysyłanie żądania GET ........................................................ 231
   Wysyłanie żądania POST ...................................................... 233
   Wysyłanie żądania synchronicznego .................................... 235
   Odbieranie wielu danych z serwera ...................................... 236
   Przerwanie żądania HTTP ..................................................... 238
                                                                                              7
Spis treści


        Pobieranie nagłówków HTTP ................................................ 239
        Pobieranie XML z serwera .................................................... 240
        (De)serializacja danych za pomocą JSON .............................. 245
        Tworzenie ekranu oczekiwania ............................................. 246
        Rozwiązanie problemu z zakładkami .................................... 249
        Rozwiązanie problemu z przyciskiem Wstecz ........................ 251
        Korzystanie z XSLT ............................................................... 254
        Korzystanie z biblioteki XML ................................................. 256
        Korzystanie z usługi Web Service w Yahoo! .......................... 259

    12 Osadzanie materiałów multimedialnych .........................263
       Dostęp do mediów osadzonych ............................................ 264
       Sprawdzanie obecności wtyczek ............................................... 264
       Kwestie dotyczące najnowszych wersji Internet Explorera .... 267
       Dostęp do treści multimedialnych ......................................... 268
       Dostęp do zawartości Java ................................................... 269
       Dostęp do zawartości Flash .................................................. 271

        Skorowidz .......................................................................273




8
stnieją pewne powtarzające się zadania JavaScript, które
musimy przeprowadzać niemal codziennie. Stanowią one
podstawę wielu aplikacji JavaScript i nie pasują do żad-
nej określonej kategorii. Ten rozdział zawiera zbiór często
spotykanych problemów oraz ich rozwiązań.



Wykrywanie przeglądarki
 window.alert(navigator.appName);


Mimo iż obecnie implementacje JavaScriptu w przeglądar-
kach są ze sobą dość zgodne (zwłaszcza gdy porównamy
to z sytuacją, która panowała w czasie wojny przeglądarek
pod koniec lat 90.), to wykrywanie przeglądarki stanowi
nadal ważny element warsztatu programisty JavaScript.

Obiekt JavaScriptu navigator dostarcza informacji na te-
mat przeglądarki. Najbardziej przydatna, choć czasem trud-
na do analizy, jest jego właściwość userAgent, zawierająca
Wykrywanie przeglądarki
ROZDZIAŁ 2


                    łańcuch tekstowy identyfikujący przeglądarkę, który jest
                    przesyłany przy każdym żądaniu w nagłówku HTTP
                    User-Agent.

                    Do określenia rodzaju przeglądarki wystarczy sama wła-
                    ściwość appName, co przedstawia kod powyżej. Tabela 2.1
                    podaje wartości appName dla najważniejszych przeglądarek.

                    Tabela 2.1. Wartości appName dla różnych przeglądarek
                      Przeglądarka             appName
                      Internet Explorer        Microsoft Internet Explorer
PODSTAWOWE ZWROTY




                      Przeglądarki Mozilla     Netscape
                      Konqueror (KDE)          Konqueror
                      Apple Safari             Netscape
                      Opera                    Opera


                    Jak widać, przeglądarka Safari podaje niepoprawną na-
                    zwę. Aby zniwelować ten efekt, możemy odszukać rodzaj
                    przeglądarki w navigator.userAgent. Ponieważ przeglą-
                    darka Opera potrafi identyfikować się jako inna przeglą-
                    darka (choć w navigator.userAgent wciąż występuje
                    ciąg "Opera"), należy ją sprawdzić w pierwszej kolejności.

                     <script language="JavaScript"
                     åtype="text/javascript">
                     var uA = navigator.userAgent;
                     var browserType = "unknown";
                     if (uA.indexOf("Opera") > -1) {
                       browserType = "Opera";
                     } else if (uA.indexOf("Safari") > -1) {
                       browserType = "Safari";
                     } else if (uA.indexOf("Konqueror") > -1) {
                       browserType = "Konqueror";
                     } else if (uA.indexOf("Gecko") > -1) {

         32
Wykrywanie przeglądarki




                                                                   ROZDZIAŁ 2
   browserType = "Mozilla";
 } else if (uA.indexOf("MSIE") > -1) {
   browserType = "Internet Explorer";
 }
 window.alert(browserType);
 </script>

Wykrywanie przeglądarki (browser.html)

Przy odrobinie wysiłku można rozbudować ten skrypt
o możliwość wykrywania pochodnych Mozilli (Firefox,
Epiphany, Galeon, Camino, SeaMonkey itp.).




                                                                   PODSTAWOWE ZWROTY
 Wykrywanie numeru wersji przeglądarki

 Numer wersji danej przeglądarki można wykryć na
 kilka sposobów. W większości wypadków jest on poda-
 ny w navigator.userAgent, co może wyglądać tak:

 Mozilla/5.0 (Windows; U; Windows NT 5.1; en;
 årv:1.8.0.3) Gecko/20060426 Firefox 1.5.0.3
 åMozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
 rv:1.4) Gecko/20030619 Netscape/7.1 (ax)
 åMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;
 åSV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET
 åCLR 2.0.50727)
 Mozilla/5.0 (compatible; Konqueror/3.4; FreeBSD)
 åKHTML/3.4.2 (like Gecko)
 Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en)
 åAppleWebKit/418 (KHTML, like Gecko) Safari/417.9.3
 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en)
 åAppleWebKit/312.8 (KHTML, like Gecko) Safari/312.6
 Opera/9.00 (Windows NT 5.1; U; en)
 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;
 åen) Opera 9.00




                                                                   33
Sprawdzanie możliwości przeglądarki
ROZDZIAŁ 2


                     Jak widzimy, w zależności od rodzaju przeglądarki
                     numer wersji jest ukryty gdzieś w obrębie wartości
                     navigator.UserAgent . Dlatego też rozpoznawanie
                     wszystkich możliwych przeglądarek i śledzenie no-
                     wych metod jest zadaniem niezwykle żmudnym. Ist-
                     nieją jednak serwisy internetowe oferujące całkiem
                     przyzwoite wykrywanie przeglądarek. Dokładna do-
                     kumentacja i kod znajdują się w witrynach:
                      n   http://www.webreference.com/tools/browser/
                          åjavascript.html
PODSTAWOWE ZWROTY




                      n   http://gemal.dk/browserspy/basic.html



                    Sprawdzanie możliwości
                    przeglądarki
                     if (document.getElementById) {
                       // ...


                    Jak widać z poprzedniego przykładu, poleganie na nume-
                    rze wersji przeglądarki nie tylko jest trudne, ale także nie
                    wiadomo, czy zadziała w przypadku przyszłych wersji.
                    Znacznie lepszą metodą określenia, czy dana przeglądar-
                    ka obsługuje funkcje wymagane przez naszą aplikację, jest
                    sprawdzenie obsługi obiektów specjalnych.

                    Na przykład, aby użyć DOM (patrz rozdział 5., „DOM
                    i DHTML”), możemy zastosować przedstawiony wyżej
                    kod. Jeśli zaimplementowana jest metoda getElement-
                    ById(), wówczas document.getElementById (bez nawia-

         34
Zapobieganie buforowaniu




                                                               ROZDZIAŁ 2
sów) zwróci odwołanie do funkcji. Przy zastosowaniu
wewnątrz warunku da wartość true, co spowoduje wy-
konanie powiązanego kodu.

Inny przykład: dla pewnych aplikacji Internet Explorer
obsługuje obiekty ActiveX, na przykład jeśli chodzi o ob-
sługę XML-a. Jednak ActiveX jest obsługiwany tylko
przez Internet Explorera w systemie Windows, ale już nie
w systemach Macintosh. Tak więc samo sprawdzenie
obecności przeglądarki Internet Explorer spowoduje pro-
blemy u użytkowników systemów Macintosh. Ominiemy




                                                               PODSTAWOWE ZWROTY
ten problem, sprawdzając obsługę ActiveX:

 if (window.ActiveXObject) {
   // ...
 }




Zapobieganie buforowaniu
 document.write("<img src="image.png?" +
 å Math.random() + "" />");


Korzystając z nagłówków po stronie serwera, możemy
uniknąć buforowania w pamięci podręcznej zawartości
tworzonej dynamicznie — tak plików graficznych, jak
i stron HTML. Nie jest to jednak idealne rozwiązanie,
ponieważ niektóre przeglądarki lub serwery proxy mogą
ignorować te ustawienia. W takim przypadku rozwiązaniem
jest dodanie do adresu URL losowego łańcucha przez
użycie Math.random(), co zwróci losową liczbę z zakresu
od 0 do 1, np. 0.1296601696732852. Dodanie takiego
                                                               35
Przekierowania
ROZDZIAŁ 2


                    łańcucha do adresu pliku graficznego zwykle nie zmienia
                    danych przesyłanych z serwera, natomiast dla przeglą-
                    darki stanowi zupełnie nowe żądanie. Dzięki temu takie
                    pliki graficzne (lub inne dane) nie będą pobierane z pa-
                    mięci podręcznej.



                    Przekierowania
                     location.href = "newPage.html";
PODSTAWOWE ZWROTY




                    Właściwość location.href daje dostęp do odczytu i za-
                    pisu adresu URL aktualnej strony. W efekcie nadanie lo-
                    cation. href innej wartości wywoła przekierowanie prze-
                    glądarki, która wczyta nową stronę, co przedstawiono na
                    powyższym przykładzie.

                     WSKAZÓWKA
                     Można to również wykonać za pomocą HTML-a:
                        <meta http-equiv="Refresh" content="X; URL=Y" />

                     Symbol X oznacza czas (w sekundach), po którym rozpocznie
                     się wczytywanie nowej strony, a Y wskazuje adres URL no-
                     wej strony.

                    Poprzednia strona zostanie umieszczona w historii prze-
                    glądarki. Jeśli jednak chcemy zastąpić w historii starą
                    stronę (aby zmienić działanie przycisku Wstecz), możemy
                    zastosować metodę location.replace():

                     location.replace("newPage.html");


         36
Odświeżanie strony




                                                               ROZDZIAŁ 2
Odświeżanie strony
 location.reload();


Metoda reload() obiektu location powoduje odświeżenie
aktualnej strony, co jest odpowiednikiem location.href
= location.href. Podając parametr true, możemy wy-
łączyć działanie pamięci podręcznej, co spowoduje „twar-
de” odświeżenie strony z serwera. Nie jest to jednak
idealne rozwiązanie, gdyż po drodze może działać serwer
proxy przechowujący kopię żądanej strony. Możemy więc




                                                               PODSTAWOWE ZWROTY
zamiast tego użyć techniki przedstawionej w podroz-
dziale „Zapobieganie buforowaniu”:

 location.search = "?" + Math.random();


Zmieni to ciąg zapytania (location.search) bieżącej stro-
ny, skutecznie odświeżając adres URL przez reload().



Tworzenie losowej liczby
 var rand = min + Math.floor((max – min + 1) *
 åMath.random());


Metoda random obiektu Math oblicza pseudolosową liczbę
z zakresu od 0 do 1 (z wyłączeniem tych liczb). Zazwy-
czaj jednak interesuje nas liczba z zakresu np. od 1 do
10. Można to osiągnąć za pomocą prostych obliczeń
matematycznych. Na przykład pomnożenie wyniku Math.
årandom() przez 10 da liczbę z zakresu od 0 do 10 (z wy-

                                                               37
Data i czas
ROZDZIAŁ 2


                    łączeniem tych liczb). Po zaokrągleniu tej wartości otrzy-
                    mamy liczbę całkowitą z zakresu od 0 do 9 (włącznie).
                    Dodanie 1 da nam liczbę z zakresu od 1 do 10.
                    Powyżej zamieszczono ogólną postać kodu, który tworzy
                    liczbę z zakresu między min a max.


                    Data i czas
                     var d = new Date();
                     var dmy = d.getDate() + "/" + (d.getMonth()+1) + "/"
PODSTAWOWE ZWROTY




                     å+ d.getFullYear();


                    W JavaScripcie obiekt Date podaje aktualną datę i daje
                    możliwość przeprowadzenia pewnych obliczeń w stosunku
                    do daty (w przypadku wartości epoki otrzymamy liczbę
                    milisekund, które upłynęły od 1 stycznia 1970 r.). Tabela
                    2.2 zawiera najważniejsze metody klasy Date. Powyższy
                    kod tworzy datę w formacie dzień/miesiąc/rok.
                    Tabela 2.2. Niektóre właściwości Date
                      Metoda             Opis
                      getDate()          Dzień miesiąca
                      getFullYear()      Rok zapisany w postaci czterocyfrowej
                      getHours()         Godzina
                      getMinutes()       Minuty
                      getMonth()         Miesiąc minus 1 (!)
                      getSeconds()       Sekundy
                      getTime()          Wartość epoki
                      toString()         Przekształcenie w łańcuch znaków
                      toUTCString()      Przekształcenie w łańcuch znaków przy
                                         użyciu czasu uniwersalnego (UTC)
         38
Data i czas




                                                                      ROZDZIAŁ 2
Wyrażenia regularne
Wyrażenia regularne to — mówiąc w uproszczeniu —
wzorce, do których pasują pewne ciągi znaków. W wy-
rażeniu regularnym wzorce zawierają łańcuch, który jest
wyszukiwany w większym łańcuchu. Można to jednak
zrobić (szybciej) za pomocą indexOf(). Zaletą wyrażeń
regularnych jest możliwość skorzystania z pewnych spe-
cjalnych opcji, takich jak symbole wieloznaczne. Tabela
2.3 przedstawia niektóre znaki specjalne i ich znaczenie.

Tabela 2.3. Znaki specjalne w wyrażeniach regularnych




                                                                      PODSTAWOWE ZWROTY
Znak      Opis                      Przykład
specjalny
^           Początek łańcucha       ^a  oznacza łańcuch
                                    rozpoczynający się na
                                    literę a
$           Koniec łańcucha         a$ oznacza łańcuch
                                    zakończony literą a
?           0 lub 1 raz (odnosi się ab? oznacza a lub ab
            do liczby wystąpień
            znaku lub wyrażenia
            poprzedzającego)
*           0 lub więcej razy       ab* oznacza a lub ab
            (odnosi się do znaku lub abb lub…
            lub wyrażenia
            poprzedzającego)
+           1 lub więcej razy       ab+ oznacza ab
            (odnosi się do znaku lub abb lub abbb lub…
            lub wyrażenia
            poprzedzającego)




                                                                      39
ROZDZIAŁ 2          Data i czas
                           czas


                      Znak      Opis                     Przykład
                      specjalny
                          [...]    Zestaw znaków         PHP[45] oznacza PHP4
                                   do wyboru             lub PHP5
                      -            Ciąg wartości         ECMAScript [3-5]
                      (w obrębie                         oznacza ECMAScript 3
                      nawiasów                           lub ECMAScript 4
                      kwadra-                            lub ECMAScript 5
                      towych)
                      ^          Do wzorca pasuje    [^A-C] oznacza D
                      (w obrębie wszystko oprócz     lub E lub F lub…
                      nawiasów podanych znaków
                      kwadra-
PODSTAWOWE ZWROTY




                      towych)
                      |          Wzorce alternatywne ECMAScript 3|
                                                         ECMAScript 4
                                                         oznacza ECMAScript 3
                                                         lub ECMAScript 4,
                                                         podobnie jak
                                                         ECMAScript (3|4)
                      (...)        Definiuje wzorzec     (a)(b) oznacza ab,
                                   składowy (ang.        ale z wykorzystaniem
                                   Subpattern)           dwóch wzorców
                                                         składowych (a i b)
                      .            Dowolny znak          . oznacza a, b, c, 0, 1,
                                                         2, $, ^…
                      {min,        Minimalna             a{1,3} oznacza a, aa
                      max}         i maksymalna liczba lub aaa. a{,3} oznacza
                                   wystąpień; pominięcie pusty łańcuch, a, aa lub
                                   min lub max oznacza aaa. a{1,} oznacza a, aa,
                                   odpowiednio 0 lub     aaa…
                                   nieskończoność
                                   (infinite)
                                  Wprowadzenie          . oznacza .
                                   następnego znaku

                     Występują też inne znaki i wyrażenia specjalne, na przy-
                     kład (d) oznacza znak będący cyfrą.
         40
Wyszukiwanie przy użyciu wyrażeń regularnych




                                                                     ROZDZIAŁ 2
Wyszukiwanie przy użyciu
wyrażeń regularnych
 zip.test("Indianapolis, IN 46240");


W JavaScripcie możemy zdefiniować wyrażenie regularne
na dwa sposoby:
 n var zip = new RegEx("d{5}");

 n var zip = /d{5}/;




                                                                     PODSTAWOWE ZWROTY
Te dwa podejścia nie różnią się funkcjonalnie, trzeba jedy-
nie wziąć pod uwagę znak ucieczki; następnie za pomocą
metody test() sprawdzimy, czy łańcuch zawiera wyra-
żenie regularne:

 var found = zip.test("Indianapolis, IN 46240");
 //true

Jeśli interesuje nas wynik dopasowania, użyjemy funkcji
exec(). Metoda ta zwraca tablicę, której pierwszym ele-
mentem jest całe dopasowanie, a wszystkie pozostałe ele-
menty to wyszukiwania podrzędne (jeśli w wyrażeniu
regularnym zastosowano nawiasy).
 var matches = zip.exec("Indianapolis, IN 46240");
 // ["46240"]


 WSKAZÓWKA
 Metoda match() zwraca wszystkie trafienia, natomiast exec()
 tylko bieżące (zazwyczaj pierwsze). Jeżeli jednak będziemy
 wielokrotnie wywoływać exec(), otrzymamy wszystkie tra-
 fienia.
                                                                     41
Zamiana tekstu
ROZDZIAŁ 2



                    Zamiana tekstu
                     var address = /(w+), ([A-Z]{2}) (d{5})/;
                     var sams = "Indianapolis, IN 46240";
                     var result = sams.replace(address, "$3 $1, $2");


                    Metoda replace(), obsługująca każdy łańcuch JavaScript,
                    służy do zamiany tekstu. Przeprowadza ona wyszukiwa-
                    nie za pomocą wyrażenia regularnego i zastępuje pasujący
                    łańcuch innym. W obrębie łańcucha zastępującego moż-
                    na stosować odwołania do dopasowań podrzędnych. 0$
PODSTAWOWE ZWROTY




                    wskazuje na pierwsze dopasowanie, $1 odwołuje się do
                    pierwszego dopasowania podrzędnego (wewnątrz nawia-
                    sów), $2 określa drugie dopasowanie itd. Zamieszczony
                    powyżej kod przeszukuje podane elementy (miasto, stan
                    i kod pocztowy), a następnie je przegrupowuje. Wynikiem
                    jest "46240 Indianapolis, IN".



                    Nawigacja po historii
                    przeglądarki
                     window.history.back();
                     window.history.forward();


                    Za historię przeglądarki odpowiada obiekt history (wła-
                    ściwość obiektu window), który zawiera listę stron WWW
                    odwiedzonych przed aktualną stroną (a jeśli jest to do-
                    stępne — także po). I choć z technicznego punktu widze-
                    nia możliwe jest przejście o kilka elementów w obrębie
                    historii, to ze względów bezpieczeństwa możliwy jest tylko
         42
Wyświetlanie daty modyfikacji strony




                                                                   ROZDZIAŁ 2
jeden sposób: przejście o jedną stronę wstecz i o jedną
stronę dalej. Odpowiadają za to poniższe dwie metody:
 n back()  — powoduje przejście do poprzedniej strony
    w historii (podobnie jak przycisk Wstecz);
 n forward()    — powoduje przejście do następnej strony
    w historii (podobnie jak przycisk Dalej).



Wyświetlanie daty
modyfikacji strony




                                                                   PODSTAWOWE ZWROTY
 document.write(document.lastModified);


Za każdym razem, gdy serwer WWW wysyła jakieś zasoby
do klienta, przesyła również datę ostatniej modyfikacji
dokumentu. Zwykle serwer WWW uzyskuje tę informa-
cję z systemu plików, ale ten nagłówek można zmodyfi-
kować lub po prostu go nie wysyłać. Tak czy inaczej
możemy użyć tej informacji, na przykład w sposób poda-
ny w powyższym przykładzie. Dzięki temu otrzymamy
mniej lub bardziej realistyczną informację o dacie mody-
fikacji strony.



Pobieranie parametrów GET
 var ls = location.search.substring(1);
 var namevalue = ls.split("&");



                                                                   43
Pobieranie parametrów GET
ROZDZIAŁ 2


                    Zazwyczaj informacja GET określana jest po stronie ser-
                    wera, ale JavaScript może uzyskać do niej dostęp za pomo-
                    cą właściwości location.search. Jednak dane występują tu
                    w postaci par nazwa-wartość. Poniższy kod odczytuje te
                    dane za pomocą metody JavaScript split(). Ukaże się
                    wówczas wynikowa tablica przyporządkowująca, aby po-
                    twierdzić, że wszystko działa prawidłowo. Wynik działa-
                    nia kodu przedstawia rysunek 2.1.

                     <script language="JavaScript"
                     åtype="text/javascript">
                     var getdata = [];
PODSTAWOWE ZWROTY




                     if (location.search.length > 1) {
                       var ls = location.search.substring(1);
                       var namevalue = ls.split("&");
                       for (var i=0; i<namevalue.length; i++) {
                         var data = namevalue[i].split("=");
                         getdata[data[0]] = data[1];
                       }
                     }
                     var s = "";
                     for (var el in getdata) {
                       s += el + ": " + getdata… + "n";
                     }
                     alert(s);
                     </script>

                    Analiza ciągu parametrów (querystring.html)




                    Rysunek 2.1. Analiza i wyświetlenie danych z ciągu parametrów
         44
Prośba o potwierdzenie przez użytkownika




                                                                    ROZDZIAŁ 2
Prośba o potwierdzenie
przez użytkownika
 <a href="anyPage.html" onclick="return
 åwindow.confirm('Czy na pewno tego
 åchcesz?');">Kliknij tutaj</a>


JavaScript zapewnia jedynie ograniczoną obsługę okien
modalnych. Najczęściej stosowana jest metoda win-
dow.alert(), ale są też inne możliwości. Jeśli użyjemy
window.confirm(), wyświetlone zostanie okno z przyci-




                                                                    PODSTAWOWE ZWROTY
skami Tak i Nie. Kliknięcie przycisku Tak zwróci true;
w przeciwnym razie wartością wynikową będzie false.
W powyższym kodzie (plik confirm.html) metoda ta peł-
ni rolę wartości powrotnej dla odnośnika, dlatego klik-
nięcie przycisku Nie nie spowoduje przejścia do adresu
wskazywanego przez odnośnik.

 OSTRZEŻENIE
 Warto tu zaznaczyć, że okno dialogowe jest tłumaczone
 przez przeglądarki, dlatego należy unikać stosowania tek-
 stów w rodzaju Kliknij Tak, aby..., ponieważ użytkownicy
 posługujący się systemami w innym języku zobaczą przycisk
 o innej nazwie.



Prośba o dane użytkownika
 var name = window.prompt("Wpisz swoje imię!",
 "<Twoje imię>");

                                                                    45
Prośba o dane użytkownika
ROZDZIAŁ 2


                    Metoda window.prompt() pozwala użytkownikowi wpisać
                    tekst w jednowierszowym polu tekstowym (patrz rysunek
                    2.2). Ta informacja jest wartością zwracaną po wywoła-
                    niu tej metody i może zostać wykorzystana w dalszej czę-
                    ści skryptu.

                     <script language="JavaScript"
                     åtype="text/javascript">
                     var name = window.prompt("Wpisz swoje imię!",
                     å"<Twoje imię>");
                     if (name != null) {
                       window.alert("Witaj, " + name + "!");
                     }
PODSTAWOWE ZWROTY




                     </script>

                    Prośba o wpisanie danych przez użytkownika (prompt.html)




                    Rysunek 2.2. Okno wprowadzania danych utworzone przez
                    window.prompt()

                     UWAGA
                     Po kliknięciu przycisku Anuluj lub naciśnięciu klawisza
                     Escape window.prompt() zwróci wartość null (jest to
                     sprawdzane przez powyższy kod). Kliknięcie przycisku OK
                     wyświetli wprowadzone dane.


         46

More Related Content

What's hot

Zwiększ szybkość! Optymalizacja serwisów internetowych
Zwiększ szybkość! Optymalizacja serwisów internetowychZwiększ szybkość! Optymalizacja serwisów internetowych
Zwiększ szybkość! Optymalizacja serwisów internetowychWydawnictwo Helion
 
Tworzenie stron WWW. Nieoficjalny podręcznik
Tworzenie stron WWW. Nieoficjalny podręcznikTworzenie stron WWW. Nieoficjalny podręcznik
Tworzenie stron WWW. Nieoficjalny podręcznikWydawnictwo 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
 
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 JavaScript i Ajax. Wydanie VI
Po prostu JavaScript i Ajax. Wydanie VIPo prostu JavaScript i Ajax. Wydanie VI
Po prostu JavaScript i Ajax. Wydanie VIWydawnictwo Helion
 
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie IIIPHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie IIIWydawnictwo Helion
 
Tworzenie stron WWW z wykorzystaniem Ajaksa. Projekty
Tworzenie stron WWW z wykorzystaniem Ajaksa. ProjektyTworzenie stron WWW z wykorzystaniem Ajaksa. Projekty
Tworzenie stron WWW z wykorzystaniem Ajaksa. ProjektyWydawnictwo Helion
 
Projektowanie serwisów WWW. Standardy sieciowe. Wydanie II
Projektowanie serwisów WWW. Standardy sieciowe. Wydanie IIProjektowanie serwisów WWW. Standardy sieciowe. Wydanie II
Projektowanie serwisów WWW. Standardy sieciowe. Wydanie IIWydawnictwo Helion
 
Adobe Dreamweaver CS3 z ASP, ColdFusion i PHP. Oficjalny podręcznik
Adobe Dreamweaver CS3 z ASP, ColdFusion i PHP. Oficjalny podręcznikAdobe Dreamweaver CS3 z ASP, ColdFusion i PHP. Oficjalny podręcznik
Adobe Dreamweaver CS3 z ASP, ColdFusion i PHP. Oficjalny podręcznikWydawnictwo Helion
 
PHP, MySQL i Apache dla każdego. Wydanie II
PHP, MySQL i Apache dla każdego. Wydanie IIPHP, MySQL i Apache dla każdego. Wydanie II
PHP, MySQL i Apache dla każdego. 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
 
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
 
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
 
ActionScript. Przewodnik encyklopedyczny
ActionScript. Przewodnik encyklopedycznyActionScript. Przewodnik encyklopedyczny
ActionScript. Przewodnik encyklopedycznyWydawnictwo Helion
 

What's hot (20)

Zwiększ szybkość! Optymalizacja serwisów internetowych
Zwiększ szybkość! Optymalizacja serwisów internetowychZwiększ szybkość! Optymalizacja serwisów internetowych
Zwiększ szybkość! Optymalizacja serwisów internetowych
 
JavaScript. Projekty
JavaScript. ProjektyJavaScript. Projekty
JavaScript. Projekty
 
Tworzenie stron WWW. Nieoficjalny podręcznik
Tworzenie stron WWW. Nieoficjalny podręcznikTworzenie stron WWW. Nieoficjalny podręcznik
Tworzenie stron WWW. Nieoficjalny podręcznik
 
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
 
JavaScript dla każdego
JavaScript dla każdegoJavaScript dla każdego
JavaScript dla każdego
 
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 JavaScript i Ajax. Wydanie VI
Po prostu JavaScript i Ajax. Wydanie VIPo prostu JavaScript i Ajax. Wydanie VI
Po prostu JavaScript i Ajax. Wydanie VI
 
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie IIIPHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
 
ActionScript 2.0. Od podstaw
ActionScript 2.0. Od podstawActionScript 2.0. Od podstaw
ActionScript 2.0. Od podstaw
 
PHP w mgnieniu oka
PHP w mgnieniu okaPHP w mgnieniu oka
PHP w mgnieniu oka
 
Tworzenie stron WWW z wykorzystaniem Ajaksa. Projekty
Tworzenie stron WWW z wykorzystaniem Ajaksa. ProjektyTworzenie stron WWW z wykorzystaniem Ajaksa. Projekty
Tworzenie stron WWW z wykorzystaniem Ajaksa. Projekty
 
Projektowanie serwisów WWW. Standardy sieciowe. Wydanie II
Projektowanie serwisów WWW. Standardy sieciowe. Wydanie IIProjektowanie serwisów WWW. Standardy sieciowe. Wydanie II
Projektowanie serwisów WWW. Standardy sieciowe. Wydanie II
 
Adobe Dreamweaver CS3 z ASP, ColdFusion i PHP. Oficjalny podręcznik
Adobe Dreamweaver CS3 z ASP, ColdFusion i PHP. Oficjalny podręcznikAdobe Dreamweaver CS3 z ASP, ColdFusion i PHP. Oficjalny podręcznik
Adobe Dreamweaver CS3 z ASP, ColdFusion i PHP. Oficjalny podręcznik
 
PHP, MySQL i Apache dla każdego. Wydanie II
PHP, MySQL i Apache dla każdego. Wydanie IIPHP, MySQL i Apache dla każdego. Wydanie II
PHP, MySQL i Apache dla każdego. Wydanie II
 
HTML i XHTML dla każdego
HTML i XHTML dla każdegoHTML i XHTML dla każdego
HTML i XHTML dla każdego
 
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
 
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
 
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
 
ActionScript. Przewodnik encyklopedyczny
ActionScript. Przewodnik encyklopedycznyActionScript. Przewodnik encyklopedyczny
ActionScript. Przewodnik encyklopedyczny
 

Similar to JavaScript. Rozmówki

JavaScript dla każdego. Wydanie IV
JavaScript dla każdego. Wydanie IVJavaScript dla każdego. Wydanie IV
JavaScript dla każdego. Wydanie IVWydawnictwo Helion
 
Ajax. Zaawansowane programowanie
Ajax. Zaawansowane programowanieAjax. Zaawansowane programowanie
Ajax. 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
 
Macromedia Dreamweaver 8. Oficjalny podręcznik
Macromedia Dreamweaver 8. Oficjalny podręcznikMacromedia Dreamweaver 8. Oficjalny podręcznik
Macromedia Dreamweaver 8. Oficjalny podręcznikWydawnictwo Helion
 
Tworzenie stron WWW w praktyce
Tworzenie stron WWW w praktyceTworzenie stron WWW w praktyce
Tworzenie stron WWW w praktyceWydawnictwo Helion
 
Tworzenie stron WWW. Kurs. Wydanie II
Tworzenie stron WWW. Kurs. Wydanie IITworzenie stron WWW. Kurs. Wydanie II
Tworzenie stron WWW. Kurs. Wydanie IIWydawnictwo 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
 
Tworzenie stron WWW. Biblia. Wydanie II
Tworzenie stron WWW. Biblia. Wydanie IITworzenie stron WWW. Biblia. Wydanie II
Tworzenie stron WWW. Biblia. Wydanie IIWydawnictwo Helion
 
PHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstawPHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstawWydawnictwo Helion
 
Serwisy internetowe. Programowanie
Serwisy internetowe. ProgramowanieSerwisy internetowe. Programowanie
Serwisy internetowe. ProgramowanieWydawnictwo Helion
 
Macromedia Flash MX 2004. Sztuka projektowania
Macromedia Flash MX 2004. Sztuka projektowaniaMacromedia Flash MX 2004. Sztuka projektowania
Macromedia Flash MX 2004. Sztuka projektowaniaWydawnictwo Helion
 
JavaScript. Ćwiczenia praktyczne. Wydanie II
JavaScript. Ćwiczenia praktyczne. Wydanie IIJavaScript. Ćwiczenia praktyczne. Wydanie II
JavaScript. Ćwiczenia praktyczne. Wydanie IIWydawnictwo Helion
 
Tworzenie stron WWW. Ilustrowany przewodnik
Tworzenie stron WWW. Ilustrowany przewodnikTworzenie stron WWW. Ilustrowany przewodnik
Tworzenie stron WWW. Ilustrowany przewodnikWydawnictwo Helion
 

Similar to JavaScript. Rozmówki (18)

JavaScript dla każdego. Wydanie IV
JavaScript dla każdego. Wydanie IVJavaScript dla każdego. Wydanie IV
JavaScript dla każdego. Wydanie IV
 
Ajax. Zaawansowane programowanie
Ajax. Zaawansowane programowanieAjax. Zaawansowane programowanie
Ajax. Zaawansowane programowanie
 
Dreamweaver MX
Dreamweaver MXDreamweaver MX
Dreamweaver MX
 
Java. Usługi WWW. Vademecum profesjonalisty
Java. Usługi WWW. Vademecum profesjonalistyJava. Usługi WWW. Vademecum profesjonalisty
Java. Usługi WWW. Vademecum profesjonalisty
 
Macromedia Dreamweaver 8. Oficjalny podręcznik
Macromedia Dreamweaver 8. Oficjalny podręcznikMacromedia Dreamweaver 8. Oficjalny podręcznik
Macromedia Dreamweaver 8. Oficjalny podręcznik
 
Tworzenie stron WWW w praktyce
Tworzenie stron WWW w praktyceTworzenie stron WWW w praktyce
Tworzenie stron WWW w praktyce
 
Tworzenie stron WWW. Kurs. Wydanie II
Tworzenie stron WWW. Kurs. Wydanie IITworzenie stron WWW. Kurs. Wydanie II
Tworzenie stron WWW. Kurs. Wydanie II
 
Ajax. Wzorce i najlepsze rozwiązania
Ajax. Wzorce i najlepsze rozwiązaniaAjax. Wzorce i najlepsze rozwiązania
Ajax. Wzorce i najlepsze rozwiązania
 
Tworzenie stron WWW. Biblia. Wydanie II
Tworzenie stron WWW. Biblia. Wydanie IITworzenie stron WWW. Biblia. Wydanie II
Tworzenie stron WWW. Biblia. Wydanie II
 
PHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstawPHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstaw
 
Serwisy internetowe. Programowanie
Serwisy internetowe. ProgramowanieSerwisy internetowe. Programowanie
Serwisy internetowe. Programowanie
 
Macromedia Flash MX 2004. Sztuka projektowania
Macromedia Flash MX 2004. Sztuka projektowaniaMacromedia Flash MX 2004. Sztuka projektowania
Macromedia Flash MX 2004. Sztuka projektowania
 
Ajax w akcji
Ajax w akcjiAjax w akcji
Ajax w akcji
 
Java. Sztuka programowania
Java. Sztuka programowaniaJava. Sztuka programowania
Java. Sztuka programowania
 
JavaScript. Ćwiczenia praktyczne. Wydanie II
JavaScript. Ćwiczenia praktyczne. Wydanie IIJavaScript. Ćwiczenia praktyczne. Wydanie II
JavaScript. Ćwiczenia praktyczne. Wydanie II
 
Tworzenie stron WWW. Ilustrowany przewodnik
Tworzenie stron WWW. Ilustrowany przewodnikTworzenie stron WWW. Ilustrowany przewodnik
Tworzenie stron WWW. Ilustrowany przewodnik
 
Java. Rozmówki
Java. RozmówkiJava. Rozmówki
Java. Rozmówki
 
Dreamweaver MX 2004
Dreamweaver MX 2004Dreamweaver MX 2004
Dreamweaver MX 2004
 

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&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesieE-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;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
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningWydawnictwo 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
 

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&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesieE-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;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
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
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
 

JavaScript. Rozmówki

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TREœCI JavaScript. Rozmówki Autor: Christian Wenz KATALOG KSI¥¯EK T³umaczenie: Leszek Sagalara ISBN: 978-83-246-0874-4 Tytu³ orygina³u: JavaScript Phrasebook KATALOG ONLINE Format: B5, stron: 288 ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK Podrêczny s³ownik najwa¿niejszych poleceñ jêzyka JavaScript • Podstawowe operacje w JavaScript DODAJ DO KOSZYKA • Tworzenie interaktywnych witryn za pomoc¹ technologii AJAX • Wspó³praca JavaScript z innymi technologiami (CSS, DOM, DHTML) CENNIK I INFORMACJE Od pewnego czasu jêzyk JavaScript prze¿ywa odrodzenie i zyskuje zas³u¿on¹ popularnoœæ. Wynika to przede wszystkim z rozwoju technologii AJAX, która umo¿liwia tworzenie reaktywnych witryn internetowych i bazuje w³aœnie na tym jêzyku. JavaScript ZAMÓW INFORMACJE pozwala na przeprowadzanie wielu przydatnych operacji niewykonalnych w zwyk³ym O NOWOœCIACH jêzyku HTML, na przyk³ad kontrolowane otwieranie nowych okien, sprawdzanie poprawnoœci danych w formularzach czy dynamiczne modyfikowanie rysunków. £atwa ZAMÓW CENNIK sk³adnia oraz szeroki zakres wykonywanych zadañ sprawi³y, ¿e JavaScript jest jednym z najpopularniejszych jêzyków skryptowych wykonywanych po stronie przegl¹darki. CZYTELNIA „JavaScript. Rozmówki” to zwiêz³y i przystêpny przewodnik omawiaj¹cy popularne problemy, pojawiaj¹ce siê w czasie pracy z tym jêzykiem, oraz podsuwaj¹cy szybkie FRAGMENTY KSI¥¯EK ONLINE i skuteczne ich rozwi¹zania. Korzystaj¹c z niego, nauczysz siê u¿ywaæ zarówno podstawowych, jak i zaawansowanych funkcji tego jêzyka. Dowiesz siê, jak do stron dodawaæ grafikê, animacje, treœci multimedialne oraz jak zastosowaæ JavaScript do tworzenia witryn za pomoc¹ technologii AJAX. Poznasz mo¿liwoœci wspó³pracy jêzyka JavaScript z innymi technologiami, takimi jak CSS, DOM czy DHTML, a tak¿e opanujesz manipulowanie cookies, formularzami, oknami czy ramkami. • Podstawowe operacje w JavaScript • Dodawanie grafiki, animacji i treœci multimedialnych • Praca ze stylami CSS • Obs³uga cookies • JavaScript w DHTML • Manipulowanie modelem DOM Wydawnictwo Helion • Obiekty i zdarzenia w JavaScript ul. Koœciuszki 1c • Podstawy technologii AJAX 44-100 Gliwice • Obs³uga formularzy tel. 032 230 98 63 • Korzystanie z us³ug Web Service e-mail: helion@helion.pl Dziêki zwiêz³ym rozmówkom w b³yskawicznym tempie usystematyzujesz swoj¹ wiedzê o jêzyku JavaScript
  • 2. O autorze ............................................................................ 9 Wstęp ............................................................................... 11 1 Podstawy JavaScriptu ....................................................... 15 JavaScript (i odrobina historii) ................................................ 15 Konfiguracja systemu testowego ............................................ 18 Konfiguracja przeglądarek ...................................................... 20 Wstawianie kodu JavaScript ................................................... 21 Stosowanie zewnętrznych plików JavaScript .......................... 24 Wczytywanie plików JavaScript .............................................. 24 Pseudoadresy URL ................................................................. 26 Wykonywanie kodu JavaScript za pomocą obsługi zdarzeń .... 27 Obsługa przeglądarek bez obsługi JavaScriptu ....................... 28 2 Podstawowe zwroty .......................................................... 31 Wykrywanie przeglądarki ....................................................... 31 Sprawdzanie możliwości przeglądarki .................................... 34 Zapobieganie buforowaniu .................................................... 35 Przekierowania ...................................................................... 36 Odświeżanie strony ................................................................ 37
  • 3. Spis treści Tworzenie losowej liczby ........................................................ 37 Data i czas ............................................................................. 38 Wyszukiwanie przy użyciu wyrażeń regularnych ..................... 41 Zamiana tekstu ...................................................................... 42 Nawigacja po historii przeglądarki ......................................... 42 Wyświetlanie daty modyfikacji strony ..................................... 43 Pobieranie parametrów GET ................................................... 43 Prośba o potwierdzenie przez użytkownika ............................ 45 Prośba o dane użytkownika .................................................... 45 3 Pliki graficzne i animacje ...................................................47 Tworzenie przycisków aktywowanych myszą .......................... 48 Wstępne wczytywanie rysunków ............................................ 51 Animacje graficzne ................................................................. 53 Rozciąganie plików graficznych .............................................. 55 Przedstawienie stanu wczytywania strony za pomocą paska postępu .................................................... 57 4 CSS .....................................................................................61 Dostęp do stylów CSS ............................................................ 62 Dostęp do klas CSS ................................................................ 64 Dostęp do własnych arkuszy stylów ....................................... 65 Dostęp do własnych reguł CSS ............................................... 66 Ukrywanie zawartości witryny ................................................ 69 Zastosowanie JavaScriptu do selektorów CSS ......................... 72 Zmiana kursora myszy ............................................................ 74 5 DOM i DHTML ....................................................................77 DOM ...................................................................................... 77 DHTML ................................................................................... 79 Dostęp do określonych elementów ......................................... 80 Dostęp do znaczników ........................................................... 81 4
  • 4. Spis treści Określanie informacji o węźle ................................................ 83 Usuwanie elementów ............................................................ 85 Dodawanie elementów .......................................................... 87 Tworzenie elementów tekstowych ......................................... 89 Działania na atrybutach ......................................................... 90 Klonowanie elementów ......................................................... 91 Zastępowanie elementów ...................................................... 93 Tworzenie listy wypunktowanej z danych JavaScript .............. 94 Tworzenie tabeli z danych JavaScript ..................................... 95 Zmiana fragmentów kodu HTML ............................................ 97 Pozycjonowanie elementów ................................................... 98 Poruszanie elementów ......................................................... 100 Tworzenie „przyklejonego” paska nawigacyjnego ................ 102 Wyskakujące okna reklamowe w technologii Flash .............. 104 6 Programowanie obiektowe i zdarzenia ........................... 107 Tworzenie klas ..................................................................... 108 Dostęp do członków klasy .................................................... 108 Dziedziczenie klas ................................................................ 111 Rozszerzanie wbudowanych obiektów JavaScript ................. 113 Reagowanie na zdarzenia JavaScriptu .................................. 114 Zdarzenia klawiatury ............................................................ 118 Wysłanie formularza za pomocą klawisza Enter ................... 119 Zdarzenia myszy .................................................................. 120 7 Cookies ............................................................................ 123 Działanie cookies ................................................................. 124 Umieszczanie cookies ........................................................... 126 Odczytywanie cookies .......................................................... 128 Określanie daty wygaśnięcia ................................................ 130 5
  • 5. Spis treści Pozostałe opcje cookie ......................................................... 132 Usuwanie cookies ................................................................ 134 Sprawdzanie obsługi cookies ............................................... 135 Zapis wielu informacji w jednym cookie ............................... 136 8 Formularze .......................................................................139 Formularze HTML i JavaScript ............................................... 140 Dostęp do pól tekstowych .................................................... 142 Dostęp do pól wyboru .......................................................... 143 Dostęp do przycisków opcji .................................................. 144 Dostęp do list wyboru .......................................................... 146 Dostęp do listy wielokrotnego wyboru ................................. 148 Wyłączanie elementów formularza ....................................... 151 Wysyłanie formularza ........................................................... 154 Zapobieganie wysłaniu formularza ....................................... 154 Zapobieganie powtórnemu wysłaniu formularza .................. 156 Przejmowanie aktywności pola ............................................ 158 Zaznaczanie tekstu w polu ................................................... 159 Wyczyszczenie pola tekstowego po jego kliknięciu ............... 161 Sprawdzanie poprawności pól tekstowych ........................... 164 Sprawdzanie pól wyboru ...................................................... 165 Sprawdzanie przycisków opcji .............................................. 165 Sprawdzanie list wyboru ...................................................... 167 Automatyczne sprawdzanie poprawności formularza ........... 169 Nawigacja za pomocą listy wyboru ...................................... 173 Nawigacja hierarchiczna za pomocą listy wyboru ................. 174 Przywracanie początkowego stanu zestawu przycisków opcji ................................................... 176 Listy wyboru z aktualną datą ................................................ 177 Listy wyboru z kontrolą poprawności daty ............................ 179 6
  • 6. Spis treści 9 Okna i ramki .................................................................... 183 Opcje okna .......................................................................... 185 Otwieranie okna modalnego ................................................ 187 Określanie rozdzielczości ekranu .......................................... 190 Określanie rozmiaru okna ..................................................... 191 Zmiana rozmiaru okna ......................................................... 192 Zmiana położenia okna ........................................................ 194 Otwarcie wyśrodkowanego okna wyskakującego ................. 195 Otwarcie okna w trybie pełnoekranowym ............................ 197 Otwarcie nowego okna w rogu ekranu ................................ 197 Utworzenie mapy witryny .................................................... 199 Zamykanie okna ................................................................... 200 Wykrywanie blokowania wyskakujących okien .................... 202 Jednoczesna zmiana zawartości dwóch ramek ..................... 206 Pływające ramki ................................................................... 209 10 Web Services ................................................................... 211 Tworzenie Web Service z PHP .............................................. 214 Tworzenie Web Service z ASP.NET ....................................... 216 Wywoływanie Web Service z Internet Explorera ................... 218 Wywoływanie Web Service z przeglądarki Mozilla ............... 220 Wywoływanie usługi Web Service ASP.NET z przeglądarki Mozilla ........................................................ 223 11 AJAX (i tematy pokrewne) ............................................... 227 Inicjowanie aplikacji AJAX .................................................... 229 Wysyłanie żądania GET ........................................................ 231 Wysyłanie żądania POST ...................................................... 233 Wysyłanie żądania synchronicznego .................................... 235 Odbieranie wielu danych z serwera ...................................... 236 Przerwanie żądania HTTP ..................................................... 238 7
  • 7. Spis treści Pobieranie nagłówków HTTP ................................................ 239 Pobieranie XML z serwera .................................................... 240 (De)serializacja danych za pomocą JSON .............................. 245 Tworzenie ekranu oczekiwania ............................................. 246 Rozwiązanie problemu z zakładkami .................................... 249 Rozwiązanie problemu z przyciskiem Wstecz ........................ 251 Korzystanie z XSLT ............................................................... 254 Korzystanie z biblioteki XML ................................................. 256 Korzystanie z usługi Web Service w Yahoo! .......................... 259 12 Osadzanie materiałów multimedialnych .........................263 Dostęp do mediów osadzonych ............................................ 264 Sprawdzanie obecności wtyczek ............................................... 264 Kwestie dotyczące najnowszych wersji Internet Explorera .... 267 Dostęp do treści multimedialnych ......................................... 268 Dostęp do zawartości Java ................................................... 269 Dostęp do zawartości Flash .................................................. 271 Skorowidz .......................................................................273 8
  • 8. stnieją pewne powtarzające się zadania JavaScript, które musimy przeprowadzać niemal codziennie. Stanowią one podstawę wielu aplikacji JavaScript i nie pasują do żad- nej określonej kategorii. Ten rozdział zawiera zbiór często spotykanych problemów oraz ich rozwiązań. Wykrywanie przeglądarki window.alert(navigator.appName); Mimo iż obecnie implementacje JavaScriptu w przeglądar- kach są ze sobą dość zgodne (zwłaszcza gdy porównamy to z sytuacją, która panowała w czasie wojny przeglądarek pod koniec lat 90.), to wykrywanie przeglądarki stanowi nadal ważny element warsztatu programisty JavaScript. Obiekt JavaScriptu navigator dostarcza informacji na te- mat przeglądarki. Najbardziej przydatna, choć czasem trud- na do analizy, jest jego właściwość userAgent, zawierająca
  • 9. Wykrywanie przeglądarki ROZDZIAŁ 2 łańcuch tekstowy identyfikujący przeglądarkę, który jest przesyłany przy każdym żądaniu w nagłówku HTTP User-Agent. Do określenia rodzaju przeglądarki wystarczy sama wła- ściwość appName, co przedstawia kod powyżej. Tabela 2.1 podaje wartości appName dla najważniejszych przeglądarek. Tabela 2.1. Wartości appName dla różnych przeglądarek Przeglądarka appName Internet Explorer Microsoft Internet Explorer PODSTAWOWE ZWROTY Przeglądarki Mozilla Netscape Konqueror (KDE) Konqueror Apple Safari Netscape Opera Opera Jak widać, przeglądarka Safari podaje niepoprawną na- zwę. Aby zniwelować ten efekt, możemy odszukać rodzaj przeglądarki w navigator.userAgent. Ponieważ przeglą- darka Opera potrafi identyfikować się jako inna przeglą- darka (choć w navigator.userAgent wciąż występuje ciąg "Opera"), należy ją sprawdzić w pierwszej kolejności. <script language="JavaScript" åtype="text/javascript"> var uA = navigator.userAgent; var browserType = "unknown"; if (uA.indexOf("Opera") > -1) { browserType = "Opera"; } else if (uA.indexOf("Safari") > -1) { browserType = "Safari"; } else if (uA.indexOf("Konqueror") > -1) { browserType = "Konqueror"; } else if (uA.indexOf("Gecko") > -1) { 32
  • 10. Wykrywanie przeglądarki ROZDZIAŁ 2 browserType = "Mozilla"; } else if (uA.indexOf("MSIE") > -1) { browserType = "Internet Explorer"; } window.alert(browserType); </script> Wykrywanie przeglądarki (browser.html) Przy odrobinie wysiłku można rozbudować ten skrypt o możliwość wykrywania pochodnych Mozilli (Firefox, Epiphany, Galeon, Camino, SeaMonkey itp.). PODSTAWOWE ZWROTY Wykrywanie numeru wersji przeglądarki Numer wersji danej przeglądarki można wykryć na kilka sposobów. W większości wypadków jest on poda- ny w navigator.userAgent, co może wyglądać tak: Mozilla/5.0 (Windows; U; Windows NT 5.1; en; årv:1.8.0.3) Gecko/20060426 Firefox 1.5.0.3 åMozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4) Gecko/20030619 Netscape/7.1 (ax) åMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; åSV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET åCLR 2.0.50727) Mozilla/5.0 (compatible; Konqueror/3.4; FreeBSD) åKHTML/3.4.2 (like Gecko) Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) åAppleWebKit/418 (KHTML, like Gecko) Safari/417.9.3 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) åAppleWebKit/312.8 (KHTML, like Gecko) Safari/312.6 Opera/9.00 (Windows NT 5.1; U; en) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; åen) Opera 9.00 33
  • 11. Sprawdzanie możliwości przeglądarki ROZDZIAŁ 2 Jak widzimy, w zależności od rodzaju przeglądarki numer wersji jest ukryty gdzieś w obrębie wartości navigator.UserAgent . Dlatego też rozpoznawanie wszystkich możliwych przeglądarek i śledzenie no- wych metod jest zadaniem niezwykle żmudnym. Ist- nieją jednak serwisy internetowe oferujące całkiem przyzwoite wykrywanie przeglądarek. Dokładna do- kumentacja i kod znajdują się w witrynach: n http://www.webreference.com/tools/browser/ åjavascript.html PODSTAWOWE ZWROTY n http://gemal.dk/browserspy/basic.html Sprawdzanie możliwości przeglądarki if (document.getElementById) { // ... Jak widać z poprzedniego przykładu, poleganie na nume- rze wersji przeglądarki nie tylko jest trudne, ale także nie wiadomo, czy zadziała w przypadku przyszłych wersji. Znacznie lepszą metodą określenia, czy dana przeglądar- ka obsługuje funkcje wymagane przez naszą aplikację, jest sprawdzenie obsługi obiektów specjalnych. Na przykład, aby użyć DOM (patrz rozdział 5., „DOM i DHTML”), możemy zastosować przedstawiony wyżej kod. Jeśli zaimplementowana jest metoda getElement- ById(), wówczas document.getElementById (bez nawia- 34
  • 12. Zapobieganie buforowaniu ROZDZIAŁ 2 sów) zwróci odwołanie do funkcji. Przy zastosowaniu wewnątrz warunku da wartość true, co spowoduje wy- konanie powiązanego kodu. Inny przykład: dla pewnych aplikacji Internet Explorer obsługuje obiekty ActiveX, na przykład jeśli chodzi o ob- sługę XML-a. Jednak ActiveX jest obsługiwany tylko przez Internet Explorera w systemie Windows, ale już nie w systemach Macintosh. Tak więc samo sprawdzenie obecności przeglądarki Internet Explorer spowoduje pro- blemy u użytkowników systemów Macintosh. Ominiemy PODSTAWOWE ZWROTY ten problem, sprawdzając obsługę ActiveX: if (window.ActiveXObject) { // ... } Zapobieganie buforowaniu document.write("<img src="image.png?" + å Math.random() + "" />"); Korzystając z nagłówków po stronie serwera, możemy uniknąć buforowania w pamięci podręcznej zawartości tworzonej dynamicznie — tak plików graficznych, jak i stron HTML. Nie jest to jednak idealne rozwiązanie, ponieważ niektóre przeglądarki lub serwery proxy mogą ignorować te ustawienia. W takim przypadku rozwiązaniem jest dodanie do adresu URL losowego łańcucha przez użycie Math.random(), co zwróci losową liczbę z zakresu od 0 do 1, np. 0.1296601696732852. Dodanie takiego 35
  • 13. Przekierowania ROZDZIAŁ 2 łańcucha do adresu pliku graficznego zwykle nie zmienia danych przesyłanych z serwera, natomiast dla przeglą- darki stanowi zupełnie nowe żądanie. Dzięki temu takie pliki graficzne (lub inne dane) nie będą pobierane z pa- mięci podręcznej. Przekierowania location.href = "newPage.html"; PODSTAWOWE ZWROTY Właściwość location.href daje dostęp do odczytu i za- pisu adresu URL aktualnej strony. W efekcie nadanie lo- cation. href innej wartości wywoła przekierowanie prze- glądarki, która wczyta nową stronę, co przedstawiono na powyższym przykładzie. WSKAZÓWKA Można to również wykonać za pomocą HTML-a: <meta http-equiv="Refresh" content="X; URL=Y" /> Symbol X oznacza czas (w sekundach), po którym rozpocznie się wczytywanie nowej strony, a Y wskazuje adres URL no- wej strony. Poprzednia strona zostanie umieszczona w historii prze- glądarki. Jeśli jednak chcemy zastąpić w historii starą stronę (aby zmienić działanie przycisku Wstecz), możemy zastosować metodę location.replace(): location.replace("newPage.html"); 36
  • 14. Odświeżanie strony ROZDZIAŁ 2 Odświeżanie strony location.reload(); Metoda reload() obiektu location powoduje odświeżenie aktualnej strony, co jest odpowiednikiem location.href = location.href. Podając parametr true, możemy wy- łączyć działanie pamięci podręcznej, co spowoduje „twar- de” odświeżenie strony z serwera. Nie jest to jednak idealne rozwiązanie, gdyż po drodze może działać serwer proxy przechowujący kopię żądanej strony. Możemy więc PODSTAWOWE ZWROTY zamiast tego użyć techniki przedstawionej w podroz- dziale „Zapobieganie buforowaniu”: location.search = "?" + Math.random(); Zmieni to ciąg zapytania (location.search) bieżącej stro- ny, skutecznie odświeżając adres URL przez reload(). Tworzenie losowej liczby var rand = min + Math.floor((max – min + 1) * åMath.random()); Metoda random obiektu Math oblicza pseudolosową liczbę z zakresu od 0 do 1 (z wyłączeniem tych liczb). Zazwy- czaj jednak interesuje nas liczba z zakresu np. od 1 do 10. Można to osiągnąć za pomocą prostych obliczeń matematycznych. Na przykład pomnożenie wyniku Math. årandom() przez 10 da liczbę z zakresu od 0 do 10 (z wy- 37
  • 15. Data i czas ROZDZIAŁ 2 łączeniem tych liczb). Po zaokrągleniu tej wartości otrzy- mamy liczbę całkowitą z zakresu od 0 do 9 (włącznie). Dodanie 1 da nam liczbę z zakresu od 1 do 10. Powyżej zamieszczono ogólną postać kodu, który tworzy liczbę z zakresu między min a max. Data i czas var d = new Date(); var dmy = d.getDate() + "/" + (d.getMonth()+1) + "/" PODSTAWOWE ZWROTY å+ d.getFullYear(); W JavaScripcie obiekt Date podaje aktualną datę i daje możliwość przeprowadzenia pewnych obliczeń w stosunku do daty (w przypadku wartości epoki otrzymamy liczbę milisekund, które upłynęły od 1 stycznia 1970 r.). Tabela 2.2 zawiera najważniejsze metody klasy Date. Powyższy kod tworzy datę w formacie dzień/miesiąc/rok. Tabela 2.2. Niektóre właściwości Date Metoda Opis getDate() Dzień miesiąca getFullYear() Rok zapisany w postaci czterocyfrowej getHours() Godzina getMinutes() Minuty getMonth() Miesiąc minus 1 (!) getSeconds() Sekundy getTime() Wartość epoki toString() Przekształcenie w łańcuch znaków toUTCString() Przekształcenie w łańcuch znaków przy użyciu czasu uniwersalnego (UTC) 38
  • 16. Data i czas ROZDZIAŁ 2 Wyrażenia regularne Wyrażenia regularne to — mówiąc w uproszczeniu — wzorce, do których pasują pewne ciągi znaków. W wy- rażeniu regularnym wzorce zawierają łańcuch, który jest wyszukiwany w większym łańcuchu. Można to jednak zrobić (szybciej) za pomocą indexOf(). Zaletą wyrażeń regularnych jest możliwość skorzystania z pewnych spe- cjalnych opcji, takich jak symbole wieloznaczne. Tabela 2.3 przedstawia niektóre znaki specjalne i ich znaczenie. Tabela 2.3. Znaki specjalne w wyrażeniach regularnych PODSTAWOWE ZWROTY Znak Opis Przykład specjalny ^ Początek łańcucha ^a oznacza łańcuch rozpoczynający się na literę a $ Koniec łańcucha a$ oznacza łańcuch zakończony literą a ? 0 lub 1 raz (odnosi się ab? oznacza a lub ab do liczby wystąpień znaku lub wyrażenia poprzedzającego) * 0 lub więcej razy ab* oznacza a lub ab (odnosi się do znaku lub abb lub… lub wyrażenia poprzedzającego) + 1 lub więcej razy ab+ oznacza ab (odnosi się do znaku lub abb lub abbb lub… lub wyrażenia poprzedzającego) 39
  • 17. ROZDZIAŁ 2 Data i czas czas Znak Opis Przykład specjalny [...] Zestaw znaków PHP[45] oznacza PHP4 do wyboru lub PHP5 - Ciąg wartości ECMAScript [3-5] (w obrębie oznacza ECMAScript 3 nawiasów lub ECMAScript 4 kwadra- lub ECMAScript 5 towych) ^ Do wzorca pasuje [^A-C] oznacza D (w obrębie wszystko oprócz lub E lub F lub… nawiasów podanych znaków kwadra- PODSTAWOWE ZWROTY towych) | Wzorce alternatywne ECMAScript 3| ECMAScript 4 oznacza ECMAScript 3 lub ECMAScript 4, podobnie jak ECMAScript (3|4) (...) Definiuje wzorzec (a)(b) oznacza ab, składowy (ang. ale z wykorzystaniem Subpattern) dwóch wzorców składowych (a i b) . Dowolny znak . oznacza a, b, c, 0, 1, 2, $, ^… {min, Minimalna a{1,3} oznacza a, aa max} i maksymalna liczba lub aaa. a{,3} oznacza wystąpień; pominięcie pusty łańcuch, a, aa lub min lub max oznacza aaa. a{1,} oznacza a, aa, odpowiednio 0 lub aaa… nieskończoność (infinite) Wprowadzenie . oznacza . następnego znaku Występują też inne znaki i wyrażenia specjalne, na przy- kład (d) oznacza znak będący cyfrą. 40
  • 18. Wyszukiwanie przy użyciu wyrażeń regularnych ROZDZIAŁ 2 Wyszukiwanie przy użyciu wyrażeń regularnych zip.test("Indianapolis, IN 46240"); W JavaScripcie możemy zdefiniować wyrażenie regularne na dwa sposoby: n var zip = new RegEx("d{5}"); n var zip = /d{5}/; PODSTAWOWE ZWROTY Te dwa podejścia nie różnią się funkcjonalnie, trzeba jedy- nie wziąć pod uwagę znak ucieczki; następnie za pomocą metody test() sprawdzimy, czy łańcuch zawiera wyra- żenie regularne: var found = zip.test("Indianapolis, IN 46240"); //true Jeśli interesuje nas wynik dopasowania, użyjemy funkcji exec(). Metoda ta zwraca tablicę, której pierwszym ele- mentem jest całe dopasowanie, a wszystkie pozostałe ele- menty to wyszukiwania podrzędne (jeśli w wyrażeniu regularnym zastosowano nawiasy). var matches = zip.exec("Indianapolis, IN 46240"); // ["46240"] WSKAZÓWKA Metoda match() zwraca wszystkie trafienia, natomiast exec() tylko bieżące (zazwyczaj pierwsze). Jeżeli jednak będziemy wielokrotnie wywoływać exec(), otrzymamy wszystkie tra- fienia. 41
  • 19. Zamiana tekstu ROZDZIAŁ 2 Zamiana tekstu var address = /(w+), ([A-Z]{2}) (d{5})/; var sams = "Indianapolis, IN 46240"; var result = sams.replace(address, "$3 $1, $2"); Metoda replace(), obsługująca każdy łańcuch JavaScript, służy do zamiany tekstu. Przeprowadza ona wyszukiwa- nie za pomocą wyrażenia regularnego i zastępuje pasujący łańcuch innym. W obrębie łańcucha zastępującego moż- na stosować odwołania do dopasowań podrzędnych. 0$ PODSTAWOWE ZWROTY wskazuje na pierwsze dopasowanie, $1 odwołuje się do pierwszego dopasowania podrzędnego (wewnątrz nawia- sów), $2 określa drugie dopasowanie itd. Zamieszczony powyżej kod przeszukuje podane elementy (miasto, stan i kod pocztowy), a następnie je przegrupowuje. Wynikiem jest "46240 Indianapolis, IN". Nawigacja po historii przeglądarki window.history.back(); window.history.forward(); Za historię przeglądarki odpowiada obiekt history (wła- ściwość obiektu window), który zawiera listę stron WWW odwiedzonych przed aktualną stroną (a jeśli jest to do- stępne — także po). I choć z technicznego punktu widze- nia możliwe jest przejście o kilka elementów w obrębie historii, to ze względów bezpieczeństwa możliwy jest tylko 42
  • 20. Wyświetlanie daty modyfikacji strony ROZDZIAŁ 2 jeden sposób: przejście o jedną stronę wstecz i o jedną stronę dalej. Odpowiadają za to poniższe dwie metody: n back() — powoduje przejście do poprzedniej strony w historii (podobnie jak przycisk Wstecz); n forward() — powoduje przejście do następnej strony w historii (podobnie jak przycisk Dalej). Wyświetlanie daty modyfikacji strony PODSTAWOWE ZWROTY document.write(document.lastModified); Za każdym razem, gdy serwer WWW wysyła jakieś zasoby do klienta, przesyła również datę ostatniej modyfikacji dokumentu. Zwykle serwer WWW uzyskuje tę informa- cję z systemu plików, ale ten nagłówek można zmodyfi- kować lub po prostu go nie wysyłać. Tak czy inaczej możemy użyć tej informacji, na przykład w sposób poda- ny w powyższym przykładzie. Dzięki temu otrzymamy mniej lub bardziej realistyczną informację o dacie mody- fikacji strony. Pobieranie parametrów GET var ls = location.search.substring(1); var namevalue = ls.split("&"); 43
  • 21. Pobieranie parametrów GET ROZDZIAŁ 2 Zazwyczaj informacja GET określana jest po stronie ser- wera, ale JavaScript może uzyskać do niej dostęp za pomo- cą właściwości location.search. Jednak dane występują tu w postaci par nazwa-wartość. Poniższy kod odczytuje te dane za pomocą metody JavaScript split(). Ukaże się wówczas wynikowa tablica przyporządkowująca, aby po- twierdzić, że wszystko działa prawidłowo. Wynik działa- nia kodu przedstawia rysunek 2.1. <script language="JavaScript" åtype="text/javascript"> var getdata = []; PODSTAWOWE ZWROTY if (location.search.length > 1) { var ls = location.search.substring(1); var namevalue = ls.split("&"); for (var i=0; i<namevalue.length; i++) { var data = namevalue[i].split("="); getdata[data[0]] = data[1]; } } var s = ""; for (var el in getdata) { s += el + ": " + getdata… + "n"; } alert(s); </script> Analiza ciągu parametrów (querystring.html) Rysunek 2.1. Analiza i wyświetlenie danych z ciągu parametrów 44
  • 22. Prośba o potwierdzenie przez użytkownika ROZDZIAŁ 2 Prośba o potwierdzenie przez użytkownika <a href="anyPage.html" onclick="return åwindow.confirm('Czy na pewno tego åchcesz?');">Kliknij tutaj</a> JavaScript zapewnia jedynie ograniczoną obsługę okien modalnych. Najczęściej stosowana jest metoda win- dow.alert(), ale są też inne możliwości. Jeśli użyjemy window.confirm(), wyświetlone zostanie okno z przyci- PODSTAWOWE ZWROTY skami Tak i Nie. Kliknięcie przycisku Tak zwróci true; w przeciwnym razie wartością wynikową będzie false. W powyższym kodzie (plik confirm.html) metoda ta peł- ni rolę wartości powrotnej dla odnośnika, dlatego klik- nięcie przycisku Nie nie spowoduje przejścia do adresu wskazywanego przez odnośnik. OSTRZEŻENIE Warto tu zaznaczyć, że okno dialogowe jest tłumaczone przez przeglądarki, dlatego należy unikać stosowania tek- stów w rodzaju Kliknij Tak, aby..., ponieważ użytkownicy posługujący się systemami w innym języku zobaczą przycisk o innej nazwie. Prośba o dane użytkownika var name = window.prompt("Wpisz swoje imię!", "<Twoje imię>"); 45
  • 23. Prośba o dane użytkownika ROZDZIAŁ 2 Metoda window.prompt() pozwala użytkownikowi wpisać tekst w jednowierszowym polu tekstowym (patrz rysunek 2.2). Ta informacja jest wartością zwracaną po wywoła- niu tej metody i może zostać wykorzystana w dalszej czę- ści skryptu. <script language="JavaScript" åtype="text/javascript"> var name = window.prompt("Wpisz swoje imię!", å"<Twoje imię>"); if (name != null) { window.alert("Witaj, " + name + "!"); } PODSTAWOWE ZWROTY </script> Prośba o wpisanie danych przez użytkownika (prompt.html) Rysunek 2.2. Okno wprowadzania danych utworzone przez window.prompt() UWAGA Po kliknięciu przycisku Anuluj lub naciśnięciu klawisza Escape window.prompt() zwróci wartość null (jest to sprawdzane przez powyższy kod). Kliknięcie przycisku OK wyświetli wprowadzone dane. 46