' Rapid-Q by William Yu (c)1999-2000 . ' ================================================================================ ' Upload_il_tuo_script_su_Rapidq.it ' Manuale_JavaScript Il corso che state per seguire si rivolge ai webmaster alle prime armi. Il lettore ideale è quello che ha appena terminato di studiare laguida_all'HTMLe ha incominciato a comporre le sue prime pagine. Nelle seguenti lezioni non verrà dunque dato per scontato nulla: non è richiesta la capacità di saper programmare, né una grande esperienza nel web publishing. Si tratta di lezioni con una finalità prevalentemente pratica: si vuol far sì che il webmaster sia in grado di operare autonomamente con JavaScript, e che quindi sia in grado di comprendere la sintassi, di poter modificare a seconda delle proprie necessità i gadget trovati in rete, e di poter creare autonomamente il codice che gli occorre per le proprie pagine. È anche importante sottolineare che l'ottica non è quella del "programmatore puro", ma è appunto quella del webmaster che si trova ad usare JavaScript per "aggiustare" o "abbellire le proprie pagine: faremo quindi molti esempi inerenti le differenze tra i browser, le diversità di risoluzione del monitor, e analizzeremo molte situazioni di "quotidiano webpublishing". Data la finalità "pratica" molti concetti teorici verranno soltanto accennati, altri verranno volutamente omessi o posticipati (in quanto non ritenuti fondamentali nell'ottica del webmaster o della situazione che si sta analizzando). Pertanto, pur essendo questo corso perfettamente autonomo, chi volesse approfondire gli aspetti teorici al termine della lettura può utilmente consultare ilCorso_a_JavaScript. Oggi in ogni sito web che si rispetti c'è sempre un po' di JavaScript: anche un semplice effetto di "roll-over", magari ottenuto usando un qualche software grafico (FireWorks, Image Ready), nasconde tra le righe del codice HTML un po' di sintassi JavaScript. Infatti, con questo semplice linguaggio di scripting che viene "letto" dal browser, si possono eseguire un'infinità di operazioni che il semplice HTML non permette. Potete: * "aggiustare" l'HTML in modo da correggere le imperfezioni che si vedono in un browser (es: Netscape), ma che in un altro browser non ci sono (es: Internet Explorer) * scambiare delle immagini (effetto di roll-over) * aprire nuove finestre secondarie * effettuare controlli sui moduli, per verificare l'input dell'utente * eseguire azioni "a tempo" ("dopo 5 secondi vai a quella pagina") * aggiungere effetti "dinamici" (oggetti che si muovono in giro per la pagina, ma anche "menu a discesa", "menu a comparsa", ecc) * modificare il contenuto di un frameset e molte altre cose che permettono di aggiungere alle vostre pagine web una serie di effetti che l'HTML da solo non consente. Per rendervi conto di tutto quello che si può fare con JavaScript sfogliate l'archivio della mailing list_JavaScript_di_HTML.it. La guida che state leggendo ha lo scopo di introdurvi gradualmente alla sintassi di JavaScript: dalle basi, fino a raggiungere una certa autonomia nell'elaborare gli script e creare da soli gli script che vi servono. Ma non si può però ottenere tutto e subito, e per raggiungere un simile obiettivo dovremo addentrarci all'interno delle strutture logiche di questo semplice e duttile linguaggio. JavaScript è un linguaggio di scripting lato-client, che viene interpretato dal browser. Sembra un affermazione molto astrusa, ma in realtà è una definizione molto semplice ed efficace. Il web - come ogni webmaster che si rispetti dovrebbe sapere - funziona a due livelli: 1. le pagine web vengono inviate all'utente da un web server, cioè da un programma che si trova su un computer remoto, e che per lo più non fa nient'altro che inviare le pagine a chi ne fa richiesta (in realtà può fare un sacco di altre cose, ma in questo contesto non è necessario specificarle...) 2. l'utente da casa visualizza sul proprio browser le pagine che gli sono stato inviate. Un "browser" è un programma che permette di leggere le pagine scritte in linguaggio HTML: si tratta di "Internet Explorer", "Netscape Navigator", "Opera" e altri. Quando visualizziamo le nostre pagine web da casa ci sono dunque due computer che si parlano: il server e il client. Alcuni linguaggi di scripting (asp, php, perl) vengono eseguiti dal web server (si chiamano appunto linguaggi server side o lato server). JavaScript, invece, viene eseguito sul nostro computer di casa dal browser (è un linguaggio client side o lato client). Dire che JavaScript è un linguaggio lato client, significa anche che i vostri script avranno validità all'interno delle singole pagine web, e non da una pagina all'altra: con JavaScript è possibile infatti passare una piccola quantità di dati da una pagina all'altra, ma è un'operazione che può essere effettuata con una certa difficoltà (coi linguaggi server side, si esegue invece in maniera intuitiva); non è possibile invece trasmettere quantità di dati elevate. Dicevamo inoltre che JavaScript è un linguaggio di scripting: questo significa che la sintassi JavaScript potete scriverla direttamente dentro la pagina HTML, senza bisogno di produrre alcun file compilato. Con i linguaggi di programmazione invece (come il C, il C++) si scrive la sintassi, e poi la si passa a un compilatore, che produce un file "compilato", in cui la sintassi è scomparsa. Tutti i programmi di windows ad esempio sono dei file compilati, in cui non c'è più traccia della sintassi originaria (cioè dei "sorgenti"). JavaScript invece non è compilato: potete quindi visualizzare in qualsiasi momento il codice di una pagina HTML e leggere le righe di sintassi JavaScript. Dire che è un linguaggio di scripting sottintende dunque il fatto che sia un linguaggio interpretato: come abbiamo visto non esiste nessun compilatore, ma è direttamente il browser, tramite un apposito motore di scripting (cioè di visualizzazione), che legge le parti di codice JavaScript. *** Nota a margine *** A dirla tutta il web è fatto a tre livelli, e non a due: * il client (il pc su cui visualizzate le pagine) * il "web server" (il programma che vi spedisce le pagine dal pc remoto) * il "database server" (un altro programma che immagazzina i dati e li restituisce, quando vengono richiesti) Il corso di JavaScript che affronteremo vi servirà per aggiungere dinamicità alle vostre pagine web, non per interagire coi database. Nel 1995 Netscape decise di dotare il proprio browser di un linguaggio di scripting che permettesse ai web designer di interagire con i diversi oggetti della pagina (immagini, form, link, ecc.), ma soprattutto con le applet Java (programmi che permettono di interagire con l'utente). Infatti in quello stesso anno Netscape era particolarmente vicina alla Sun Microsystems (ideatrice di Java), con cui aveva stretto una partnership. Brendan Eich venne incaricato del progetto e inventò LiveScript (chiamato così ad indicare la propria vivacità e dinamicità ). Le due aziende il 4 dicembre 1995 annunciarono la nascita di questo nuovo linguaggio, descrivendolo come «complementare all'HTML e a Java». La versione beta di Netscape Navigator 2.0 incorporava quindi LiveScript, ma - in omaggio a Java - Netscape decise di ribattezzare il nuovo linguaggio di scripting JavaScript. La versione 2.0 di Netscape Navigator fu un grande successo, ma i webdesigner non utilizzarono JavaScript per interagire con le applet java (come avrebbe voluto Netscape), ma piuttosto per rendere più vive le pagine. È in quest'anno che nacque nel web l'effetto di roll-over. Microsoft rispose a JavaScript in due modi: * con l'introduzione di VBScript all'interno di Internet Explorer 3 * con una propria versione di JavaScript, sotto molti aspetti simile all'originale, chiamata JScript (siamo nel luglio 1996) JScript è dunque la versione di JavaScript supportata da Internet Explorer. A causa di alcune differenze presenti in Internet Explorer 3 Netscape e Sun decisero di standardizzare JavaScript e si affidano all'European Computer Manufacturers Association (ECMA). La stessa associazione che oggi è incaricata da Microsoft di standardizzare il C#. La standardizzazione incominciò nel novembre 1996 e fu adottata nel giugno 1997 da ECMA e nell'aprile 1998 da ISO (International Organization for Standardization, una delle più prestigiose organizzazioni internazionali che si occupano di standard). Attualmente siamo alla terza versione di ECMAScript. ECMAScript è dunque figlio di JavaScript. E oggi quando si dice JavaScript, JScript ed ECMAscript sostanzialmente si indicano tre varietà dello stesso linguaggio. Bisogna poi tener conto che differenti versioni del browser, implementano differenti versioni di JavaScript (la più recente è la 1.4, mentre la 1.5 è ancora in beta), quindi il modo di interpretare determinati costrutti potrebbe variare da una sottoversione del browser all'altra. Tutto questo tuttavia non ci deve minimamente preoccupare: si tratta della normale evoluzione (e crescita) di un linguaggio di scripting che si adatta alle diverse esigenze sopraggiunte (dei programmatori e del commercio). La versione di JavaScript è comunque pur sempre la 1.x e dunque tra una sottoversione e l'altra non ci saranno degli sconvolgimenti sostanziali. E quando la differenza c'è ci penseranno i manuali (o meglio ancora i reference) ad avvertirci. Per quel che riguarda il futuro del nostro linguaggio, attualmente esistono due proposte di Netscape per JavaScript/ECMAScript (passerà del tempo, però prima che le proposte siano riviste e accettate, e prima che i browser siano in grado di leggere le nuove versioni del linguaggio): JavaScript 2.0 e EcmaScript 4. Un tabella di confronto sulle varie versioni di JavaScript rispetto al browser la potete trovare sul Corso_Javascript di HTML.it. Per completezza bisogna inoltre notare, che JavaScript può anche essere utilizzato per scrivere delle applicazioni server side, nel caso che il web server lo consenta (se, ad esempio, si utilizza iPlanet di Sun): in questo caso JavaScript può dunque svolgere mansioni analoghe a quelle che normalmente vengono effettuate da php, asp o jsp. L'utilizzo di JavaScript lato server è per lo più un caso sporadico, e comunque non ce ne occuperemo nella presente guida. La sintassi di JavaScript può essere utilizzata inoltre per scrivere pagine asp, ma questo dipende dalla versatilità di asp, più che essere una caratteristica di JavaScript. Capita sempre di sentire nei forum di html frasi come "Aiutatemi con questo script Java". Per lo più chi scrive una cosa di questo genere intende "uno script JavaScript". Bene: JavaScript non è Java. Il fatto che i due linguaggi abbiano nomi simili è solo una trovata di marketing, dovuta all'alleanza tra Netscape e Sun. Una trovata che nel corso degli anni - a dire la verità - ha ingenerato soltanto confusione. Java è un linguaggio di programmazione, la cui avvenuta realizzazione fu annunciata nel maggio 1995 da John Gage (direttore dello "Science Office" di Sun Microsystems). Dello stesso anno è l'annuncio della realizzazione del browser "HotJava", realizzato apposta per dimostrare le possibilità di questo linguaggio. Alla sua comparsa Java sconvolse il mondo dell'information technology, dal momento che introdusse il concetto rivoluzionario della Virtual machine: un processore virtuale che viene installato sulla macchina (Windows, Macintosh, Linux, o quello che è) e i programmi vengono poi realizzati per quel processore virtuale. In pratica quando vi viene richiesto di installare Java, voi installate sul vostro pc un software che legge (cioè che interpreta) i programmi scritti in "Java": questo software è appunto la "Java Virtual Machine". Sun diede inoltre la possibilità di inserire la programmazione nel web, attraverso le applet (piccoli programmi in java che si inseriscono nel codice HTML), le quali permettevano finalmente di interagire con le azioni dell'utente (cosa questa che l'HTML non permette). Nacque quindi l'esigenza di integrare meglio le applet, e fu studiato un linguaggio apposito (che - come abbiamo visto - è il nostro LiveScript - dicembre 1995). Dato il grande successo di Java, LiveScript fu ribattezzato JavaScript, ma i due linguaggi hanno poche cose in comune. Nel corso degli anni Java ha sviluppato una formidabile libreria di oggetti, classi e metodi, che oggi sono la vera forza di questo linguaggio. Oggi con java si realizzano: * programmi (come StarOffice e OpenOffice) * applet (ma sono in disuso) * applicazioni lato server (J2EE, servlet, jsp…) Tutte cose che con JavaScript lato-client non potete fare. Con JavaScript potete intervenire "solo" sulle vostre pagine web. JavaScript e Java si assomigliano un po' nella sintassi (nel modo di richiamare oggetti e le loro proprietà tramite il "."), ma l'analogia termina lì. In realtà si tratta di due mondi complementari, di due linguaggi che fanno cose differenti. Se volete programmare in Java, e non è JavaScript quello che vi interessa, potete consultare la Guida_Java di HTML.it. Quando programmate con JavaScript dovete immaginare che la pagina HTML sia formata da vari elementi in varia relazione fra loro. Il browser infatti (con all'interno il documento HTML) può essere infatti "sezionato" in vari elementi: * prima di tutto c'è il browser stesso (l'oggetto navigator) * poi la finestra che contiene tutto quanto (l'oggetto window) * eventuali frames (l'oggetto window.frames) * il documento HTML vero e proprio (document) * i moduli per raccogliere l'input dell'utente (document.forms["nomeForm"]) * le immagini (document.images["nomeImmagine"]) * i cookie (document.cookie["nomeCookie"]) * i livelli * le applet (document.applets["nomeApplet"]) * la barra degli indirizzi (location) * la barra di stato, nella parte bassa del browser (status) e via di seguito. Tutti gli oggetti che vediamo nel browser sono in relazione gerarchica fra di loro (ci sono elementi-padre ed elementi-figli) e tramite JavaScript - utilizzando la corretta sintassi - è possibile interrogare questi elementi, leggerne le proprietà e in taluni casi anche cambiare il valore di queste proprietà . Facciamo un esempio. Prendiamo il seguente codice HTML: