Tecnologie di Sviluppo per il Web JavaScript Concetti Fondamentali versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca – Università della Basilicata – [email protected] JavaScript >> Sommario Concetti Fondamentali Introduzione Storia di JavaScript I Problemi di JavaScript Il Modulo Form di XHTML Il Modulo Script di XHTML 1.0 Strict Il Modulo degli Eventi di XHTML Caratteristiche del Linguaggio Convalida dei Dati G. Mecca - Tecnologie di Sviluppo per il Web 2 JavaScript >> Concetti Fondamentali >> Introduzione Introduzione Che cos’è JavaScript un linguaggio di programmazione pensato lo sviluppo di applicazioni Web Come viene utilizzato normalmente codice utilizzato per rendere dinamiche le pagine HTML può essere utilizzato per offrire servizi interattivi attraverso pagine Web G. Mecca - Tecnologie di Sviluppo per il Web 3 JavaScript >> Concetti Fondamentali >> Introduzione Introduzione Leggende metropolitane su JavaScript JavaScript non è Java inizialmente: LiveScript operazione di marketing della Netscape JavaScript non è semplice è un linguaggio di programmazione completo si tratta di una tecnologia complessa G. Mecca - Tecnologie di Sviluppo per il Web 4 JavaScript >> Concetti Fondamentali >> Introduzione Introduzione Esecuzione di JavaScript sul client il codice è immerso nelle pagine HTML viene eseguito a seguito di “eventi” scatenati dall’utente (es: click del mouse) il codice viene eseguito dal browser il codice accede ad oggetti predefiniti che rappresentano il contenuto della pagina (DOM), modificandone dinamicamente le proprietà ed il comportamento G. Mecca - Tecnologie di Sviluppo per il Web 5 JavaScript >> Concetti Fondamentali >> Introduzione Introduzione browser richiesta (URI) Rete Server HTTP codice JavaScript risposta (pagina) <html> ... </html> >> immagini.html >> indovina.html G. Mecca - Tecnologie di Sviluppo per il Web 6 JavaScript >> Concetti Fondamentali >> Storia di JavaScript Storia di JavaScript In realtà per capirlo è necessario vederne la storia La storia di JavaScript introdotto dalla Netscape Netscape Navigator 2.0 (Client-Side JavaScript 1.0) successivamente 1.1, 1.2, 1.3 (Navigator 4.06) la Netscape lo vede come tecnologia strategica e introduce Server Side JavaScript la versione lato server non avrà molto successo G. Mecca - Tecnologie di Sviluppo per il Web 7 JavaScript >> Concetti Fondamentali >> Storia di JavaScript Storia di JavaScript La Microsoft durante la guerra dei browser introduce la sua versione, incompatibile con JavaScript JScript 1.0 in Internet Explorer 3.0 successivamente JScript 1.1 anche la Microsoft ne introduce una versione sul lato del server con ASP, in alternativa a VBScript anche in questo caso con poco successo G. Mecca - Tecnologie di Sviluppo per il Web 8 JavaScript >> Concetti Fondamentali >> Storia di JavaScript Storia di JavaScript La standardizzazione nel tentativo di standardizzare il linguaggio, è stato definito un nucleo comune sottoposto all’ECMA standardizzato nel 2000 ECMA JavaScript linguaggio di programmazione neutro prevede pochi oggetti predefiniti (Array, Date, Math) G. Mecca - Tecnologie di Sviluppo per il Web 9 JavaScript >> Concetti Fondamentali >> Storia di JavaScript Storia di JavaScript Estensioni dello standard Client Side JavaScript Server Side JavaScript entrambe includono ECMA JavaScript Client Side JavaScript aggiunge oggetti rilevanti per il browser (DOM della pagina, finestra, menu, ecc.) Server Side JavaScript aggiunge oggetti rilevanti per il server (database, sessioni ecc.) G. Mecca - Tecnologie di Sviluppo per il Web 10 JavaScript >> Concetti Fondamentali >> Storia di JavaScript Storia di JavaScript DHTML combinazione di CSS, JavaScript e dell’implem. del DOM fornita dal browser animazione degli elementi della pagina analogo: GUI dei linguaggi di programmaz. Implementazione del DOM insieme di oggetti InfoSet altri oggetti del browser (finestra, preferiti …) G. Mecca - Tecnologie di Sviluppo per il Web 11 JavaScript >> Concetti Fondamentali >> I Problemi di JavaScript I Problemi di JavaScript Primo problema incompatibilità delle versioni Cause di incompatibilità diverse versioni del linguaggio sviluppate da Netscape e Microsoft diverse versioni dei browser alcuni browser (es: Lynx) non supportano JavaScript per nulla In generale non è possibile prevedere che tipo di supporto un generico browser offre per JavaScript G. Mecca - Tecnologie di Sviluppo per il Web 12 CSS >> Dettagli e Approfondimenti >> I Problemi di JavaScript Dynamic HTML (DHTML) G. Mecca - Tecnologie di Sviluppo per il Web 13 JavaScript >> Concetti Fondamentali >> I Problemi di JavaScript I Problemi di JavaScript Secondo problema insicurezza Cause di insicurezza linguaggio sul lato del client codice eseguito sulla macchina dell’utente causa della diffusione di codice malevolo (virus) In molti casi viene disabilitato dall’utente o seriamente limitato nelle funzionalità G. Mecca - Tecnologie di Sviluppo per il Web 14 JavaScript >> Concetti Fondamentali >> I Problemi di JavaScript I Problemi di JavaScript Di conseguenza seri problemi di “accessibilità” (>>) In questo corso JavaScript non viene considerata una tecnologia fondamentale per lo sviluppo Web ne diamo una rapida panoramica ci concentriamo solo sulla versione lato client ci concentriamo su un utilizzo in particolare: la convalida dei dati dell’utente G. Mecca - Tecnologie di Sviluppo per il Web 15 JavaScript >> Concetti Fondamentali >> Caratteristiche del Linguaggio Caratteristiche del Linguaggio Prima di entrare nel merito del linguaggio ci servono alcuni elementi mancanti In particolare ci serve un modo per rendere interattive le pagine HTML e raccogliere dati da elaborare ci serve un modo per immergere il codice JavaScript nel codice XHTML ci serve un modo per intercettare gli eventi scatenati dall’utente sull’interfaccia G. Mecca - Tecnologie di Sviluppo per il Web 16 JavaScript >> Concetti Fondamentali >> Caratteristiche del Linguaggio Caratteristiche del Linguaggio Nuovi moduli di XHMTL il modulo form (XHTML Basic): consente di rendere interattive le pagine XHTML il modulo script (XHTML 1.0 Strict): consente di immergere codice eseguibile nell’XHTML il modulo degli eventi (XHTML 1.0 Strict): consente di intercettare eventi scatenati dall’utente Nota gli script e gli eventi non fanno parte di XHTML Basic, che non prevede l’utilizzo di script sul client G. Mecca - Tecnologie di Sviluppo per il Web 17 JavaScript >> Concetti Fondamentali >> Il Modulo Form Il Modulo Basic Forms di XHTML Maschera (“Form”) modulo per la raccolta di dati forniti dall’utente (es: nome, cognome, targa) Utilizzo serve nelle applicazioni interattive l’utente riempie la maschera “sottomette” la maschera un’applicazione analizza i dati forniti dall’utente, li elabora e fornisce la risposta G. Mecca - Tecnologie di Sviluppo per il Web 18 JavaScript >> Concetti Fondamentali >> Il Modulo Form Il Modulo Basic Forms di XHTML Spazi per l’immissione dei dati “controlli” della form Esistono controlli di vario tipo immissione del testo immissione di password scelte da elenchi bottoni ... G. Mecca - Tecnologie di Sviluppo per il Web >> form.html 19 JavaScript >> Concetti Fondamentali >> Il Modulo Form Il Modulo Basic Forms di XHTML Elemento principale della maschera elemento “form” – contiene i vari controlli elemento a livello di blocco attributo action (riferimento a URI); required attributo method (post o get); se manca è get Esempio: <form action=“form.asp” method=“post”> ... </form> G. Mecca - Tecnologie di Sviluppo per il Web 20 JavaScript >> Concetti Fondamentali >> Il Modulo Form Il Modulo Basic Forms di XHTML Controlli elementi in linea input, select (option), textarea attributo name (nome del controllo) Valore del controllo in alcuni casi specificabile dall’utente in altri casi prefissato e selezionabile dall’utente G. Mecca - Tecnologie di Sviluppo per il Web 21 JavaScript >> Concetti Fondamentali >> Il Modulo Form Il Modulo Basic Forms di XHTML elemento attributo modello di contenuto form action (URI), method (“get” | “post”) … (heading | block | list)* - ma non altre form input name, size (Number), type ("text"* | "password" | "checkbox" | "radio" | "submit" | "reset" | "hidden" ), value … EMPTY select name, size (Number), multiple (“multiple”)… option+ option selected (“selected”), value … #PCDATA textarea name, cols (Number), rows (Number) … #PCDATA label for (#PCDATA | inline) G. Mecca - Tecnologie di Sviluppo per il Web 22 JavaScript >> Concetti Fondamentali >> Il Modulo Form Il Modulo Basic Forms di XHTML Attenzione esistono due diversi moduli per le form Modulo Basic Forms di XHTML Basic è sufficiente per la maggior parte delle applicazioni Modulo Forms di XHTML 1.0 Strict prevede altri controlli es: controllo di tipo “file”; serve per inviare file al server G. Mecca - Tecnologie di Sviluppo per il Web 23 JavaScript >> Concetti Fondamentali >> Il Modulo Form Il Modulo Basic Forms di XHTML Invio della form i valori specificati dall’utente sono inviati all’URI (applicazione) corrispondente all’attributo “action” insieme di coppie <nome>=<valore> separate da & e codificati (URI encoding) Esempio: targa=AB123DE&utente=Mario%20Rossi G. Mecca - Tecnologie di Sviluppo per il Web 24 JavaScript >> Concetti Fondamentali >> Il Modulo Form Il Modulo Basic Forms di XHTML Metodo di Invio metodo get: valori nella query string dell’URI metodo post: valori nel corpo della richiesta HTTP In generale per problemi di sicurezza (gli URI sono visibili) e di efficienza (gli URI non devono essere molto lunghi) è preferibile post G. Mecca - Tecnologie di Sviluppo per il Web 25 JavaScript >> Concetti Fondamentali >> Il Modulo Form Il Modulo Basic Forms di XHTML Attenzione le maschere sono uno strumento fondamentale per le applicazioni Web sia applicazioni sul lato client (JavaScript) sia sul lato server Nel seguito della lezione studieremo il loro utilizzo con JavaScript Successivamente: lato server G. Mecca - Tecnologie di Sviluppo per il Web 26 JavaScript >> Concetti Fondamentali >> Il Modulo Script di XHTML Il Modulo Script di XHTML 1.0 Strict Immergere script in una pagina XHTML il modulo di scripting di XHTML 1.0 Strict Due elementi script: consente di specificare codice è un elemento in linea che può comparire nel corpo oppure nella testa (head) noscript: consente di specificare contenuto HTML per i browser che non sono in grado di eseguire il codice (compare nel corpo) G. Mecca - Tecnologie di Sviluppo per il Web 27 JavaScript >> Concetti Fondamentali >> Il Modulo Script di XHTML Il Modulo Script di XHTML 1.0 Strict Attributi dell’elemento script type: per specificare il Content-Type es: text/javascript in precedenza: language (deprecato) src: il codice JavaScript può essere immerso all’interno dell’elemento script oppure in un documento esterno di cui viene specificato l’URI elemento attributo modello di contenuto script type, src (URI), … #PCDATA noscript ... (heading | block | list )+ G. Mecca - Tecnologie di Sviluppo per il Web 28 JavaScript >> Concetti Fondamentali >> Il Modulo Script di XHTML Il Modulo Script di XHTML 1.0 Strict Contenuto dell’elemento script istruzioni a livello “globale” dichiarazioni di funzioni Semantica dell’elemento script il codice a livello “globale” viene eseguito appena viene incontrato dal browser le funzioni devono essere richiamate esplicitamente (tipicamente da “gestori di eventi” >>) G. Mecca - Tecnologie di Sviluppo per il Web 29 JavaScript >> Concetti Fondamentali >> Il Modulo Script di XHTML Il Modulo Script di XHTML 1.0 Strict Nota molto spesso il codice JavaScript è immerso in commenti HTML Scopo nascondere il codice ai browser che non supportano JavaScript e che lo visualizzerebbero nella pagina >> immagini.html >> indovina.html G. Mecca - Tecnologie di Sviluppo per il Web 30 JavaScript >> Concetti Fondamentali >> Il Modulo degli Eventi Il Modulo Eventi di XHTML 1.0 Strict Eventi azioni dell’utente sull’interfaccia Esempi eventi principali: selezione di un collegamento, selezione di un bottone altri eventi: modifica di un controllo in una form, sorvolo del mouse, “messa a fuoco” da parte del mouse, perdita della messa a fuoco G. Mecca - Tecnologie di Sviluppo per il Web 31 JavaScript >> Concetti Fondamentali >> Il Modulo degli Eventi Il Modulo Eventi di XHTML 1.0 Strict Programmazione basata su eventi gli eventi possono avvenire in qualsiasi istante, sulla base delle azioni dell’utente il sistema (browser) è in grado di intercettarli quando avvengono il programmatore specifica “gestori di eventi” il sistema esegue il gestore di evento opportuno Gestore di evento (“event handler”) blocco di codice da eseguire per gestire un certo evento G. Mecca - Tecnologie di Sviluppo per il Web 32 JavaScript >> Concetti Fondamentali >> Il Modulo degli Eventi Il Modulo Eventi di XHTML 1.0 Strict Nelle pagine Web gli eventi possono essere gestiti dal client oppure dal server In questa lezione gestione da parte del client i gestori di eventi sono scritti in JavaScript vengono associati agli eventi attraverso opportuni attributi G. Mecca - Tecnologie di Sviluppo per il Web 33 JavaScript >> Concetti Fondamentali >> Il Modulo degli Eventi Eventi ... sottomissione form evento submit click del mouse su un’ancora evento click gestore specificato utilizzando l’attributo onsubmit per la form gestore specificato utilizzando l’attributo onclick per l’ancora browser cambiamento nella visualizzazione codice JavaScript <html> ... </html> >> immagini.html >> indovina.html G. Mecca - Tecnologie di Sviluppo per il Web 34 JavaScript >> Concetti Fondamentali >> Il Modulo degli Eventi Il Modulo Eventi di XHTML 1.0 Strict Principali attributi del modulo eventi onclick onsubmit Altri attributi onchange onmouseover onfocus, onblur ... G. Mecca - Tecnologie di Sviluppo per il Web 35 JavaScript >> Concetti Fondamentali >> Il Modulo degli Eventi Il Modulo Eventi di XHTML 1.0 Strict onclick attributo applicabile agli elementi a e agli input di tipo submit o reset (bottoni) specifica il codice JavaScript da eseguire se il collegamento o il bottone viene schiacciato onsubmit attributo applicabile all’elemento form specifica il codice JavaScript da eseguire se la maschera viene sottomessa G. Mecca - Tecnologie di Sviluppo per il Web 36 JavaScript >> Concetti Fondamentali >> Il Modulo degli Eventi Il Modulo Eventi di XHTML 1.0 Strict Esempi <a href="javascript:void(0)“ onclick="selezionaXHTML()"> Visualizza Immagine XHTML</a> <a href="javascript:void(0)“ onclick="selezionaCSS()"> Visualizza Immagine CSS</a> Esempi <form id="inizio" action="javascript:void(0)“ onsubmit="iniziaGioco()“ > <p>Inserisci il tuo nome: </p> <div> <input type="text" name="nome" /> <input type="submit" value="Inizia“ /> </div> </form> G. Mecca - Tecnologie di Sviluppo per il Web 37 JavaScript >> Concetti Fondamentali >> Caratteristiche del Linguaggio Caratteristiche del Linguaggio Caratteristiche fondamentali linguaggio interpretato linguaggio debolmente tipato linguaggio “ibrido” Altri linguaggi con caratteristiche simili VBScript (ASP 3.0) PHP Perl G. Mecca - Tecnologie di Sviluppo per il Web 38 JavaScript >> Concetti Fondamentali >> Caratteristiche del Linguaggio Caratteristiche del Linguaggio Linguaggio interpretato il codice non viene compilato viene tipicamente immerso nel sorgente di una pagina HTML ed eseguito da un interprete fornito a corredo del browser sulla macchina client processo di sviluppo e test accelerato G. Mecca - Tecnologie di Sviluppo per il Web 39 JavaScript >> Concetti Fondamentali >> Caratteristiche del Linguaggio Caratteristiche del Linguaggio Linguaggio debolmente tipato le variabili vengono dichiarate senza specificarne il tipo una variabile è uno spazio nella memoria che può contenere valori di qualsiasi tipo il linguaggio effettua conversioni frequenti di tipo per confrontare i valori nelle espressioni Esempio var x, y; x = 10; y = “10”; // x==y è vero G. Mecca - Tecnologie di Sviluppo per il Web 40 JavaScript >> Concetti Fondamentali >> Caratteristiche del Linguaggio Caratteristiche del Linguaggio Linguaggio “ibrido” linguaggio essenzialmente procedurale codice fatto di funzioni limitate funzionalità orientate agli oggetti Essenzialmente è possibile utilizzare classi predefinite creare nuovi oggetti di queste classi manipolare oggetti esistenti chiamandone i metodi G. Mecca - Tecnologie di Sviluppo per il Web 41 JavaScript >> Concetti Fondamentali >> Caratteristiche del Linguaggio Modello degli Oggetti sul Client fonte: Netscape’s JavaScript Guide G. Mecca - Tecnologie di Sviluppo per il Web 42 JavaScript >> Concetti Fondamentali >> Caratteristiche del Linguaggio Caratteristiche del Linguaggio In generale linguaggio pensato per lo sviluppo rapido di applicazioni di piccole dimensioni Ma non è scalabile ad applicazioni di grandi dimensioni facile introdurre errori difficile produrre codice modulare e di qualità G. Mecca - Tecnologie di Sviluppo per il Web 43 JavaScript >> Concetti Fondamentali >> Caratteristiche del Linguaggio Caratteristiche del Linguaggio Un esempio: Indovina il numero un’applicazione JavaScript per giocare a indovina il numero Molte delle caratteristiche tipiche varie form nella pagina, che vengono utilizzate anche per i messaggi alcune variabili globali varie funzioni scatenate da eventi >> indovina.html >> indovina.js G. Mecca - Tecnologie di Sviluppo per il Web 44 JavaScript >> Concetti Fondamentali >> Convalida dei Dati Convalida dei Dati Un’applicazione tipica di JavaScript verifica dei dati forniti dall’utente ad un’applicazione Web Esempio: pagamento del bollo in linea codice fiscale targa cilindrata adesione a termini contrattuali G. Mecca - Tecnologie di Sviluppo per il Web 45 JavaScript >> Concetti Fondamentali >> Convalida dei Dati Convalida dei Dati La situazione tipica c’è un’applicazione (codice sul server) all’utente viene inviata una form da riempire attraverso il browser viene fornito codice JavaScript per la convalida (codice sul client) il codice JavaScript verifica la correttezza dei dati forniti prima che i dati vengano sottoposti all’applicazione Web sul server G. Mecca - Tecnologie di Sviluppo per il Web 46 JavaScript >> Concetti Fondamentali >> Convalida dei Dati Convalida dei Dati submit submit richiesta + parametri browser Server Rete HTTP errori risposta codice JavaScript <html> <form> </form> </html> pagina HTML con form + JavaScript (codice sul client) G. Mecca - Tecnologie di Sviluppo per il Web applicazione Web (codice sul server) >> esempioConvalida.html >> IIS http://localhost/corsi 47 JavaScript >> Concetti Fondamentali >> Convalida dei Dati Convalida dei Dati Semantica dei gestori di eventi vengono eseguiti in corrispondenza di azioni opportune che scatenano l’evento es: click su un’ancora possono restituire al browser un valore booleano se il valore è true, l’azione viene gestita normalmente; es: richiesta di URI se il valore è false, l’azione viene ignorata G. Mecca - Tecnologie di Sviluppo per il Web 48 JavaScript >> Concetti Fondamentali >> Convalida dei Dati Convalida dei Dati Nel caso delle form il gestore di eventi onSubmit esegue il codice JavaScript di convalida dei dati se non ci sono errori, restituisce true ed il contenuto della form viene regolarmente sottomesso all’applicazione Web se ci sono errori, restituisce false e la form non viene sottomessa G. Mecca - Tecnologie di Sviluppo per il Web 49 JavaScript >> Concetti Fondamentali >> Convalida dei Dati Convalida dei Dati Esempio usiamo una funzione JavaScript “verifica” che controlla se i dati della form sono corretti <h2>Esempio di Convalida con JavaScript</h2> <form method="post" action="provaPost.asp" onsubmit="return verifica()"> ... </form> >> esempioConvalida.html G. Mecca - Tecnologie di Sviluppo per il Web 50 JavaScript >> Concetti Fondamentali >> Convalida dei Dati Convalida dei Dati La tecnica standard si utilizza una variabile globale “errori” la funzione verifica chiama ulteriori funzioni, ciascuna delle quali controlla un possibile errore se c’è un errore, ritorna false ed aggiunge un messaggio alla variabile “errori” G. Mecca - Tecnologie di Sviluppo per il Web 51 JavaScript >> Concetti Fondamentali >> Convalida dei Dati Convalida dei Dati >> esempioConvalida.html >> Lynx http://localhost/corsi Attenzione il meccanismo non è per niente affidabile se il browser non supporta JavaScript, la convalida non viene effettuata al server arrivano dati scorretti Di conseguenza la convalida con JavaScript deve essere vista come una funzionalità aggiuntiva, utilizzabile solo da alcuni utenti G. Mecca - Tecnologie di Sviluppo per il Web 52 JavaScript >> Concetti Fondamentali >> Convalida dei Dati Convalida dei Dati La corretta metodologia di convalida è sempre indispensabile convalidare i dati dell’utente nell’applicazione Web sul server in alcuni casi può essere utile effettuare la convalida ANCHE sul client con JavaScript Vantaggi l’interazione con l’utente è più immediata si riduce il numero di richieste errate al server (riduzione dell’occupazione di banda) G. Mecca - Tecnologie di Sviluppo per il Web 53 JavaScript >> Concetti Fondamentali >> Sommario Riassumendo Introduzione Storia di JavaScript I Problemi di JavaScript Il Modulo Script di XHTML 1.0 Strict Il Modulo Form di XHTML Caratteristiche del Linguaggio Convalida dei Dati G. Mecca - Tecnologie di Sviluppo per il Web 54 Termini della Licenza Termini della Licenza This work is licensed under the Creative Commons AttributionShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Questo lavoro viene concesso in uso secondo i termini della licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere una copia della licenza, è possibile visitare http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. G. Mecca - Tecnologie di Sviluppo per il Web 55