Struttura del corso

Bene, eccoci ora alle prese con una nuova sezione, dedicata al "fratello minore" del Java: il JavaScript. A differenza del Java, che è parzialmente interpretato, questo linguaggio è interamente interpretato, con la conseguente lentezza d'esecuzione. Le sue potenzialità sono inferiori rispetto a Java, ma è di più rapido apprendimento e, essendo molti aspetti sintattici simili se non uguali, può così costituire la "rampa di lancio" per passare a Java: personalmente ho seguito questa via.

Ho intenzione di trattare svariati argomenti, pian piano sempre più difficili, partendo dai costrutti di base, per giungere alle loro applicazioni pratiche. Analizzerò a tal scopo i metodi utili alla realizzazione di status bar scroller, che altro non sarebbero se non quegli script per far apparire dei messaggi nella barra di stato che continuano a scorrere finchè la pagina rimane visualizzata. Affronterò anche script per eseguire controlli sulle forms, per gestire data ed ora, o ancora quelli legati all'uso di frames. In conclusione prenderò in esame le differenze tra Internet Explorer e Netscape, e quindi degli script specifici per l'uno o l'altro.

Script ed HTML

Innanzi tutto, lo script viene inserito nella stessa pagina del documento da cui deve essere eseguito, a differenza dei file .class che sono a sé stanti. Questo sistema ha dei vantaggi e degli svantaggi: non c'è bisogno di creare una nuova connessione con il server per scaricare lo script, ma la pagina HTML aumenta di dimensioni, anche per quelli che il JavaScript non possono leggerlo. Essendo il JavaScript una implementazione abbastanza nuova (e comunque posteriore alla creazione del primo standard HTML) era sorto il problema di "nascondere" ai vecchi browser il contenuto dello script. Per ovviarvi si e' ricorso ad un tag standard, quello per inserire dei commenti nelle pagine HTML non visibili al navigatore, se non leggendo direttamente il source HTML. È stato inoltre introdotto il tag SCRIPT per informare i browser capaci di interpretare il JavaScript (od altri tipi di script) che il successivo commento è da intendersi come uno script. Per inserire uno script in una pagina HTML, quindi, si ricorre al seguente costrutto:

<
SCRIPT
>
<!--
   Qui va inserito lo script
//-->
</
SCRIPT
>

Il tag SCRIPT accetta un parametro, LANGUAGE, che definisce il linguaggio in cui è composto lo script. Questo permette a browser in grado di interpretare alcuni tipi di script, ma non quelli del linguaggio in questione, di ignorarne completamente il contenuto, evitando di generare inutili ed indesiderati messaggi d'errore. È quindi sempre consigliabile inserire il parametro LANGUAGE nel tag SCRIPT, per evitare effetti indesiderati. Il tag dovrà quindi essere scritto:

<
SCRIPT LANGUAGE
="JavaScript">

È possibile inserire delle parti di documento visibili solamente agli utenti di un browser che non può interpretare il JavaScript. Lo si fa utilizzando il tag NOSCRIPT, come si può osservare qui sotto:

<
NOSCRIPT
>
   Qui va inserita la parte del documento da
   nascondere a chi può eseguire il JavaScript
</
NOSCRIPT
>

Netscape visualizza il testo fra i due tag se nella pagina non compare almeno uno script.

Come ultima considerazione, il JavaScript (come Java) è case-sensitive, il che significa che vi è differenza tra lettere maiuscole e minuscole.

Dopo queste necessarie premesse passiamo ora alla trattazione vera e propria della programmazione col JavaScript.

Comandi immediati e funzioni

All'interno di uno script si possono organizzare i comandi in due modi: l'uno fa in modo che il comando sia immediatamente eseguito, l'altro invece permette di eseguirlo solo su richiesta. Nel primo caso, la riga di codice interessata verrà eseguita solo una volta, altrimenti lo si potrà eseguire più volte, tante quante ne faremo richiesta. Per chiarire le idee, farò ora due esempi. Prima però devo introdurre un comando del JavaScript: write(stringa). Questo comando permettere di scrivere la stringa nel punto del documento da cui viene richiamato. Ovviamente dovrà essere applicato ad un oggetto documento, come si può vedere più sotto. Il documento contenuto nella pagina corrente è, per definizione, chiamato document. Ogni comando, in JavaScript, deve essere terminato con il segno di punteggiatura ; . Anche se in molti casi si può ometterlo, grazie all'implementazione del browser, è buona regola inserirlo sempre, per garantire l'universalità dello script e perché, se si vorrà passare poi a Java, si sarà costretti ad aggiungerlo. Ma ora, ecco un esempio di comando immediato. Per far eseguire immediatamente un comando basta semplicemente scriverlo all'interno di uno script. Ecco quindi il codice sorgente e la sua visualizzazione:

<
SCRIPT LANGUAGE
="JavaScript">
<!--
   document.write('Il tuo browser interpreta il JavaScript.');
//-->
</
SCRIPT
> 
<
NOSCRIPT
>
Il tuo browser non interpreta il JavaScript.
</
NOSCRIPT
>

Ottieni come risultato che:

Il tuo browser non interpreta il JavaScript.

Con questo semplice script si è fatto scrivere al browser la stringa Il tuo browser interpreta il JavaScript oppure Il tuo browser non interpreta il JavaScript, a seconda delle capacità che possiede. Un occhio attento avrà notato che la stringa che ho deciso di fare stampare al brwoser era, nel codice sorgente, racchiusa da apici. Questo permette all'interprete (quella parte del software che si occupa di eseguire gli script) di capire dove la stringa comincia e dove finisce. Se avessi omesso quegli apici avrebbe interpretato le parole come nomi di variabili (un argomento che tratterò tra breve) causando un errore.

Beh, e che fine ha fatto il secondo metodo? Bene, il secondo metodo consiste nel rinchiudere uno o più comandi, in tutto e per tutto uguali a quelli immediati, all'interno di un blocco chiamato funzione. Una funzione ha la seguente struttura:

function NomeDellaFunzione() {
   Qui va inserito il codice da eseguire
   ad ogni chiamata alla funzione
}

Le funzioni, come i comandi immediati, vanno inserite all'interno di uno script. È buona norma dichiarare le funzioni all'inizio del documento, per evitare disguidi dovuti ad un lento caricamento. Ecco quindi un esempio di funzione:

<
SCRIPT LANGUAGE
="JavaScript">
<!--
   function Scrivi() {
      document.write('Il tuo browser interpreta il JavaScript.');
   }
// -->
</
SCRIPT
>

Ok, ora abbiamo creato la funzione Scrivi(), ma come usufruirne? Semplice: si crea uno script che contenga il comando diretto Scrivi(). Ad esempio:

<
SCRIPT LANGUAGE
="JavaScript">
<!--
   Scrivi();
// -->
</
SCRIPT
>
<
NOSCRIPT
>
Il tuo browser non interpreta il JavaScript.
</
NOSCRIPT
>

Ottieni come risultato che:

Il tuo browser non interpreta il JavaScript.

Nota bene: anche se finora ho sempre utilizzato il tag NOSCRIPT subito dopo gli script, non è necessario; lo script infatti funziona comunque. Ho semplicemente utilizzato tale tag per permettere di vedere un messaggio anche a coloro che hanno un browser che non interpreta il JavaScript.

Commenti

I commenti sono delle porzioni di testo inserite in mezzo al codice, che non influenzano il funzionamento del programma. Sono generalmente utilizzati dall'autore per inserire delle informazioni utili alla comprensione del codice, o per inserire riferimenti a sè, come ad esempio un indirizzo E-Mail. Esistono due modi per inserire dei commenti all'interno di un sorgente JavaScript, esattamente uguali a quelli presenti in Java e C++. Il primo consiste nel richiudere tutto il testo del commento tra */\** e \/ ; il testo può anche occupare più righe. Il secondo consiste invece nel precedere il commento da //* ; così facendo tutta la riga sarà considerata un commento. Sono esempi di commento:

/*Tutto il testo
qui in mezzo
verrà interpretato
come un commento,
quindi ignorato.*/

//Questo è un commento terminante con la fine di questa riga.

Un commento non può essere inserito a metà di un comando. È quindi sbagliato scrivere:

document.write('Il tuo browser /* Stampa questa riga */ interpreta il JavaScript.');
document.write('Il tuo browser interpreta il JavaScript.') /* Stampa questa riga */ ;

È invece giusto scrivere:

document.write('Il tuo browser interpreta il JavaScript.'); /* Stampa questa riga */
document.write('Il tuo browser interpreta il JavaScript.'); // Stampa questa riga

Avete notato la doppia barra apposta prima del termine di uno script, come descritto nella sezione Script ed HTML? Se conoscete l'HTML saprete che i tag per i commenti sono semplicemente \<!-- e --\>. La doppia barra serve proprio ad evitare che l'interprete consideri quella linea un comando, generando un errore. Ma questa è solo una curiosità.

Concluderei qui la mia prima lezione, non volendo introdurre troppi concetti allarmando l'utente inesperto. Se pensate che abbia scritto troppo, o troppo poco, oppure che sia giustamente calibrato, vi prego di farmelo sapere, scrivendomi a: <cmf@hotmail.com>. Vi prego anche di comunicarmi eventuali critiche, positive o negative.

Carlo Ferretti