00 introduzione JavaScript.indd - McGraw

Introduzione
Organizzazione e caratteristiche di questa edizione
Come le precedenti edizioni di JavaScript la Guida, questa edizione contiene
molte più informazioni di quelle che possono essere stampate e rilegate in
un solo volume. Il contenuto completo è disponibile sul sito Web relativo a
questo libro (http://www.informatica.mcgraw-hill.it/minisito.asp). Questa
nuova edizione è strutturata in modo tale da fornire quante più informazioni
possibili nella parte stampata del libro. Per questo motivo molti listati di codice
completi sono ora disponibili nelle pagine stampate. Le nozioni fondamentali
su JavaScript sono presenti nella versione stampata, mentre il contenuto più
avanzato è disponibile nella versione elettronica sul sito Web. Ecco alcuni
dettagli sulla struttura del libro.
Parte I
La Parte I del libro inizia con un capitolo che mostra un confronto tra JavaScript e Java e affronta il ruolo di JavaScript all’interno del World Wide Web.
Il mondo dei browser e dello scripting Web ha subito notevoli cambiamenti
dalla prima comparsa di JavaScript. Ecco perché il Capitolo 2 è dedicato alla
descrizione delle sfide per i programmatori che devono sviluppare applicazioni
per pubblico con una sola piattaforma e con più piattaforme. Il Capitolo 3
comincia a parlare del linguaggio JavaScript e permetterà di scrivere il primo
script pratico.
Parte II
Tutta la Parte II è dedicata a un tutorial per i principianti di JavaScript. In
nove lezioni si troverà un percorso graduale nei concetti di programmazione
fondamentali e nel vero scripting JavaScript, ponendo l’accento sugli standard
industriali supportati dalla maggior parte degli odierni browser programmabili.
Alla fine di ciascuna lezione sono disponibili alcuni esercizi che aiuteranno il
lettore a rafforzare quanto appena appreso e lo inviteranno a utilizzare le nuove
00 introduzione JavaScript.indd XI
29/07/2004 11.54.58
XII
INTRODUZIONE
conoscenze (le soluzioni degli esercizi sono nell’appendice, disponibile sul
Minisito). L’obiettivo del tutorial è fornire sufficiente esperienza per cominciare a scrivere semplici pagine facilitando la comprensione delle discussioni
e degli esempi discussi nella parte restante del libro. Alla fine dell’ultima
lezione i lettori sapranno programmare l’effetto di scambio delle immagini
di rollover, oggi così popolare in moltissime pagine Web, e saranno in grado
di modificare il contenuto di una pagina Web in modo dinamico.
Parte III
La Parte III fornisce una descrizione dettagliata dei modelli di oggetti del
documento implementati dai browser odierni. In tutti i capitoli un diagramma
di compatibilità indica i browser che supportano ogni oggetto e le sue caratteristiche. Un capitolo in particolare, il Capitolo 15, contiene materiale di riferimento condiviso dalla maggior parte dei restanti capitoli della Parte III.
Parte IV
Le informazioni sul linguaggio JavaScript fondamentale si trovano nella Parte
IV. Come per i riferimenti della Parte III, i capitoli su JavaScript mostrano i
diagrammi di compatibilità per ciascun termine del linguaggio JavaScript.
Parte V
Numerose appendici forniscono utili informazioni di riferimento. Queste risorse comprendo un riferimento rapido agli oggetti JavaScript e dei browser,
un elenco delle parole riservate per JavaScript, le risposte agli esercizi dei
tutorial della Parte II e infine le risorse su Internet. Questa parte la troverete sul
Minisito all’indirizzo: http://www.informatica.mcgraw-hill.it/minisito.asp.
Prerequisiti per l’apprendimento di JavaScript
Sebbene questo libro non richieda al lettore grande esperienza di programmazione, più pagine Web sono state create con HTML, più facile sarà comprendere l’interazione di JavaScript con gli elementi che normalmente si
inseriscono nella pagina. A volte è necessario modificare i tag HTML per
trarre vantaggio dallo scripting. Se si conoscono già i tag, JavaScript sarà più
facile da imparare.
I moduli e i loro elementi (campi di testo, pulsanti ed elenchi di selezione)
giocano un ruolo particolarmente importante nella maggior parte del lavoro
tipico di JavaScript. Si dovrebbe avere familiarità con tali elementi e i loro
attributi HTML. Fortunatamente non è necessario conoscere lo scripting lato
server o il passaggio di informazioni da un modulo a un server; l’attenzione qui
è sullo scripting lato client, che lavora indipendentemente dal server, dopo che
00 introduzione JavaScript.indd XII
29/07/2004 11.55.02
INTRODUZIONE
XIII
la pagina contenente JavaScript è stata completamente caricata nel browser. Il
vocabolario fondamentale dello standard HTML corrente dovrebbe far parte
delle proprie conoscenze. È inoltre opportuno conoscere alcuni degli standard
di markup dei documenti più recenti, come XHTML e CSS (Cascading Style
Sheets). Non serve comunque essere degli esperti: le ricerche sul Web relative
a questi termini riveleranno numerosi tutorial sull’argomento.
Se non si è mai programmato prima
Per chi ha imparato HTML su un piccolo libro anni fa, le dimensioni di questo
libro possono spaventare. JavaScript può non essere il linguaggio più semplice del
mondo, ma è ben lontano da un linguaggio di programmazione completo, come
Java o C. JavaScript permette di sperimentare ottenendo grandi risultati anche da
poche righe di codice, senza realizzare applicazioni complete (come i programmi
che si acquistano). L’interprete JavaScript incorporato in tutti i browser compatibili
con gli script fa molto lavoro per il programmatore.
La programmazione, al livello più elementare, non consiste in niente di più
che scrivere una serie di istruzioni che il computer deve seguire. Gli umani
seguono istruzioni in tutti i momenti, anche se non se ne rendono conto. Il
viaggio verso la casa di un amico è una sequenza di piccole istruzioni: tre isolati
in quella direzione, girare a sinistra qui, girare a destra lì. Fra tali istruzioni ci
sono alcune decisioni da prendere: se il semaforo è rosso fermarsi, se il semaforo è verde andare, se il semaforo è giallo fermarsi o procedere con prudenza.
Occasionalmente è necessario ripetere alcune operazioni molte volte (come
fare il giro dell’isolato fino a quando si trova un parcheggio). Un programma
per computer non solo contiene la sequenza principale di passi, ma prevede
anche le decisioni o le ripetizioni necessarie per raggiungere l’obiettivo del
programma (quali la gestione dei diversi stati di un semaforo o cosa fare se
qualcuno ha appena occupato il parcheggio a cui si puntava).
La difficoltà iniziale nell’apprendimento della programmazione è prendere confidenza con l’organizzazione di parole e numeri per le istruzioni del
linguaggio. Tale organizzazione è chiamata sintassi, come in una lingua.
Poiché generalmente i computer sono piuttosto stupidi, non perdonano se non
si comunica con essi nel loro linguaggio. Quando si parla con un altro essere
umano è possibile sbagliare la sintassi di una frase e molto probabilmente
l’interlocutore capirà, ma con i linguaggi di programmazione non è così. Se
la sintassi non è perfetta il computer dice che è stato commesso un errore.
La migliore cosa da fare è considerare gli errori di sintassi come esperienze
di apprendimento. Anche i programmatori esperti sbagliano. Ogni errore di
sintassi fatto (e ogni risoluzione di tale errore realizzata riscrivendo la dichiarazione corretta) si aggiunge alla conoscenza del linguaggio.
Se si ha un po’ di esperienza di programmazione
Nell’apprendimento di JavaScript l’esperienza di programmazione con un
linguaggio procedurale come Basic può essere più un ostacolo che un aiuto.
00 introduzione JavaScript.indd XIII
29/07/2004 11.55.02
XIV
INTRODUZIONE
Sebbene si possa comprendere meglio la precisione della sintassi, probabilmente il concetto generale di programma è completamente diverso da quello
di JavaScript. Parte di ciò ha a che vedere con le operazioni tipiche eseguite
da uno script (eseguire un’operazione molto specifica in risposta all’azione di
un utente nella pagina Web), ma in gran parte ha a che vedere con la natura
della programmazione orientata agli oggetti.
In un tipico programma procedurale il programmatore è responsabile di
tutto ciò che compare sullo schermo e di tutto ciò che avviene dietro le quinte.
Appena il programma viene eseguito, una grande parte di codice è dedicata
all’impostazione dell’ambiente visivo. Per esempio lo schermo contiene numerosi campi di testo o pulsanti su cui fare clic. Per determinare quale pulsante è
stato premuto, il programma esamina le coordinate del clic e le confronta con
le coordinate di tutti i pulsanti sullo schermo. L’esecuzione del programma si
dirama quindi per eseguire le istruzioni riservate al clic in quello spazio.
La programmazione orientata agli oggetti è quasi il contrario di questo
processo. Un pulsante è considerato un oggetto, qualcosa di tangibile. Un
oggetto ha proprietà, come etichetta, dimensioni, allineamento e così via.
Un oggetto può anche contenere uno script. Allo stesso tempo, il software
del sistema e del browser, lavorando insieme, possono inviare un messaggio
a un oggetto (secondo ciò che fa l’utente) per attivare lo script. Per esempio,
se un utente fa clic in un campo di testo, il sistema/browser dice al campo
che qualcuno ha fatto clic in quel punto (cioè ha impostato il focus su quel
campo), dando al campo il compito di decidere cosa fare. Qui entra in gioco
lo script. Lo script è collegato al campo e contiene le istruzioni che il campo
deve eseguire dopo che l’utente lo ha attivato. Un altro set di istruzioni può
controllare cosa succede quando l’utente scrive nel campo e preme il tasto
TAB o fa clic fuori dal campo, cambiandone il contenuto.
Alcuni script possono sembrare procedurali nella costruzione: contengono
un semplice elenco di istruzioni eseguite in ordine. Ma quando si ha a che
fare con dati provenienti da elementi di modulo, tali istruzioni lavorano con
la natura di JavaScript basata sugli oggetti. Il modulo è un oggetto, anche
ciascun pulsante di scelta o campo di testo è un oggetto. Lo script agisce sulle
proprietà di tali oggetti per ottenere risultati.
La transizione da programmazione procedurale a programmazione orientata agli oggetti può essere la sfida più difficile. Quando all’autore fu presentata la programmazione orientata agli oggetti, all’inizio non la comprese. Ma
quando il concetto fu chiaro, dopo un lungo percorso meditativo, si accesero
numerose lampadine e da allora l’orientamento agli oggetti gli sembra l’unico
modo ragionevole di programmare.
Se si ha esperienza di programmazione in C
Prendendo in prestito la sintassi da Java (che a suo turno deriva da C e C++),
JavaScript condivide con C molte caratteristiche sintattiche. I programmatori
che conoscono C si troveranno a proprio agio: i simboli degli operatori, le
strutture condizionali e i cicli seguono la tradizione di C. In JavaScript ci sono
00 introduzione JavaScript.indd XIV
29/07/2004 11.55.02
INTRODUZIONE
XV
meno problemi sui tipi di dati rispetto a C: in JavaScript una variabile non è
limitata a un particolare tipo di dati.
Con tanta sintassi di JavaScript familiare si sarà in grado di concentrarsi sui concetti di modello di oggetti del documento, che possono essere
completamente nuovi. Tuttavia sarà ancora necessario avere una buona base
di HTML (in particolare sugli elementi di modulo) per mettere al lavoro la
propria esperienza in JavaScript.
Se si ha esperienza di programmazione in Java
Nonostante la somiglianza nei nomi, i due linguaggi condividono solo aspetti
superficiali: costruzioni condizionali e di cicli, riferimenti a oggetti a “punto”
come in C, parentesi graffe per il raggruppamento di dichiarazioni, numerose
parole chiave e alcuni altri attributi. Le dichiarazioni di variabili, tuttavia,
sono piuttosto diverse, perché JavaScript non è un linguaggio fortemente tipizzato. Una variabile può contenere un valore intero in una dichiarazione e
una stringa nella dichiarazione successiva (ma non si sta dicendo che questo
rappresenti un buono stile di programmazione). Ciò che viene chiamato metodo in Java, in JavaScript viene chiamato metodo (quando è associato a un
oggetto predefinito) o funzione (per le azioni definite dal programmatore). I
metodi e le funzioni di JavaScript possono restituire valori di qualsiasi tipo
senza dover dichiarare il tipo di dati in anticipo.
Forse gli aspetti più importanti di Java da eliminare quando si scrive codice
JavaScript sono le nozioni di classi, ereditarietà, istanze e passaggio di messaggi orientati agli oggetti. Questi aspetti semplicemente non contano quando
si programma in JavaScript. Tuttavia i progettisti di JavaScript sapevano che i
programmatori Java hanno alcune abitudini difficili da perdere, quindi anche se
JavaScript non richiede un punto e virgola alla fine di ciascuna dichiarazione,
se la si scrive nel codice l’interprete non se ne preoccupa.
Se si ha esperienza di script o di macro
Nonostante la somiglianza nei nomi, i due linguaggi condividono solo aspetti
L’esperienza con la scrittura di script in altri strumenti di authoring o di macro nei
programmi è utile per la comprensione di numerosi concetti, tra i quali forse il
più importante è l’idea di combinare dichiarazioni per eseguire un’operazione su
alcuni dati. Per esempio, è possibile scrivere una macro con Microsoft Excel che
esegue una trasformazione di dati su cifre giornaliere che arrivano da un report
finanziario su un altro computer. La macro si trova nel menu Macro e viene eseguita
scegliendo la sua voce di menu quando arriva un nuovo set di dati.
Gli ambienti di programmazione moderni, come Visual Basic, ricordano
gli ambienti di scripting sotto questo aspetto. Presentano al programmatore un
generatore di interfacce, che si occupa di gran parte del lavoro di visualizzazione
degli oggetti sullo schermo con cui l’utente dovrà interagire. Gran parte del compito
del programmatore riguarda la scrittura di piccoli frammenti di codice eseguiti
quando l’utente interagisce con questi oggetti. Una gran parte dello scripting che
00 introduzione JavaScript.indd XV
29/07/2004 11.55.02
XVI
INTRODUZIONE
si realizza in JavaScript corrisponde esattamente a quello schema. Di fatto quegli
ambienti assomigliano all’ambiente di browser compatibili con gli script in un altro
senso: forniscono un set finito di oggetti predefiniti che hanno set fissi di proprietà
e comportamenti. Questa prevedibilità facilita l’apprendimento dell’intero ambiente
e la pianificazione di un’applicazione.
Convenzioni sulla formattazione e sui nomi
I listati e le parole degli script in questo libro sono presentati con un font differente
rispetto al restante testo. A causa dei limiti nella larghezza della pagina, le righe
di script a volte possono essere interrotte in modo innaturale. In quei casi il resto
dello script è nella riga successiva. Se queste interruzioni di riga creano problemi
quando si scrive un listato in un documento si suggerisce di accedere al listato
corrispondente sul sito Web per vedere come dovrebbe essere scritto.
Quando si raggiunge la Parte III del libro si troveranno numerosi modelli
di oggetti o caratteristiche che richiedono una specifica versione minima
di un browser. Per facilitare l’individuazione nel testo della necessità di un
particolare browser o versione di browser, la maggior parte dei riferimenti ai
browser è costituita da un’abbreviazione e da un numero di versione. Per esempio, WinIE5 indica Internet Explorer 5 per Windows; NN6 indica Netscape
Navigator 6 per qualsiasi sistema operativo; Moz rappresenta i nuovi browser
curati da The Mozilla Foundation; Safari è il browser di Apple per Mac OS
X. Se una funzione è stata introdotta con una particolare versione di browser
ed è supportata dalle versioni successive, un segno più (+) segue il numero.
Per esempio, una caratteristica indicata da WinIE5.5+ indica che è richiesto
come minimo Internet Explorer 5.5 per Windows, ma che la caratteristica è
disponibile anche in WinIE6 e probabilmente nelle versioni future di WinIE.
A volte una caratteristica o qualche comportamento evidenziato si applicano
a un solo browser. Per esempio una caratteristica indicata con NN4 significa
che funziona solo in Netscape Navigator 4.x. Un segno meno (per esempio
WinIE-) indica che il browser non supporta l’elemento discusso.
Il formato dei listati di codice in questa edizione è cambiato rispetto elle
precedenti. Per sottolineare la tendenza della comunità di sviluppatori Web a
seguire gli standard più recenti, gli esempi HTML in questa edizione seguono
le convenzioni di XHTML, che impone l’utilizzo di tag e nomi di attributi
minuscoli, nonché di tag che non fungono da contenitori (come il tag <br />
di XHTML al posto del tag <br> di HTML). Un’altra modifica relativa allo
stile riguarda l’inclusione esplicita dei punti e virgola alla fine delle righe di
istruzioni JavaScript. I punti e virgola sono ancora facoltativi nel linguaggio,
ma l’autore ha cambiato il suo stile di scrittura del codice.
NOTA
SUGGERIMENTO
ATTENZIONE
Le icone Nota, Suggerimento e Attenzione indicano punti importanti.
00 introduzione JavaScript.indd XVI
29/07/2004 11.55.02