programmazione client-side: javascript · javascript 2 a. bechini 2004 javascript: introduzione •...

12
A. Bechini 2004 Programmazione Programmazione client client- side: side: JavaScript JavaScript 2 A. Bechini 2004 JavaScript: JavaScript: Introduzione Introduzione JavaScript è un linguaggio di programmazione/scripting molto flessibile, utilizzato in vari settori applicativi (proposto da Netscape) Nelle applicazioni web, è usato anche per programmazione server-side (p. es. JScript in ASP) Una versione “estesa” di JavaScript costituisce il meccanismo di scripting standard all’interno dei web browser. Standardizzazione ECMA-262: “ECMAScript”

Upload: others

Post on 29-Sep-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programmazione client-side: JavaScript · JavaScript 2 A. Bechini 2004 JavaScript: Introduzione • JavaScript è un linguaggio di programmazione/scripting molto flessibile, utilizzato

1

A.

Bech

ini 2

00

4

ProgrammazioneProgrammazioneclientclient--side:side:JavaScriptJavaScript

2

A.

Bech

ini 2

00

4

JavaScript: JavaScript: IntroduzioneIntroduzione

• JavaScript è un linguaggio di programmazione/scripting molto flessibile, utilizzato in vari settori applicativi (proposto da Netscape)

• Nelle applicazioni web, è usato anche per programmazione server-side (p. es. JScript in ASP)

• Una versione “estesa” di JavaScript costituisce il meccanismo di scripting standard all’interno dei web browser.

• Standardizzazione ECMA-262: “ECMAScript”

Page 2: Programmazione client-side: JavaScript · JavaScript 2 A. Bechini 2004 JavaScript: Introduzione • JavaScript è un linguaggio di programmazione/scripting molto flessibile, utilizzato

2

3

A.

Bech

ini 2

00

4CaratteristicheCaratteristiche

• JavaScript non ha niente a che fare con Java, tranne la somiglianza sintattica

• Linguaggio interpretato: prende spunto da Perl• Debolmente tipizzato: tipicamente non si

associa un tipo alle variabili• Articolato e complesso, anche se spesso usato

per applicazioni molto semplici.• Client-side JavaScript = “core” JavaScript +

DOM (Document Object Model)

4

A.

Bech

ini 2

00

4

Precisazioni su Precisazioni su clientclient--side JSside JS

• I moderni browser contengono direttamente (no plug-in) l’interprete JavaScript, per poter eseguire programmi JavaScript

• I programmi JavaScript sono generalmente inseriti all’interno di documenti HTML, per mezzo dell’apposito tag <script>

Page 3: Programmazione client-side: JavaScript · JavaScript 2 A. Bechini 2004 JavaScript: Introduzione • JavaScript è un linguaggio di programmazione/scripting molto flessibile, utilizzato

3

5

A.

Bech

ini 2

00

4Un primo Un primo esempioesempio

<html> <head></head><body>

<H2> A sentence writtenthrough JavaScript follows:</H2>

<script language=“JavaScript”>document.write(“Hello in JavaScript!”)

</script><H2> And again this is plain HTML...</H2>

</body></html>

6

A.

Bech

ini 2

00

4

Primo Primo esempio perfezionatoesempio perfezionato

• Per evitare problemi con browser che non supportano JavaScript, il codice viene normalmente inserito dentro un commento HTML

...<body>

<H2> A sentence writtenthrough JavaScript follows:</H2>

<script language=“JavaScript”><!– “hidden” JS code

document.write(“Hello in JavaScript!”)// end of “hidden” JS code --></script><H2> And again this is plain HTML...</H2>

</body></html>

Inizio commento

Fine commento

Page 4: Programmazione client-side: JavaScript · JavaScript 2 A. Bechini 2004 JavaScript: Introduzione • JavaScript è un linguaggio di programmazione/scripting molto flessibile, utilizzato

4

7

A.

Bech

ini 2

00

4

Gestione Gestione JS JS degli eventi degli eventi grafici sul grafici sul browserbrowser

• L’interazione dell’utente con l’ambiente graficodel browser determina l’occorrenza di “eventi”

• Esempi di eventi: – onClick, che si verifica quando un bottone viene

premuto– mouseOver, quando si passa con il cursore del mouse

sopra un componente grafico.

• Questi eventi possono essere riconosciuti e gestiti tramite codice e funzioni JavaScript: per far questo si usano i cosiddetti event handlers.

8

A.

Bech

ini 2

00

4

EventiEventi: : esempioesempio

</html><head></head><body>

<form> <input type=“button” value=“Push here!”

onClick=“alert(‘Pop-up Hello!’)” ></form>

</body></html>

Page 5: Programmazione client-side: JavaScript · JavaScript 2 A. Bechini 2004 JavaScript: Introduzione • JavaScript è un linguaggio di programmazione/scripting molto flessibile, utilizzato

5

9

A.

Bech

ini 2

00

4Alcuni eventi Alcuni eventi JavaScriptJavaScript

• onClick• onDblClick• onMouseDown• onMouseUp• onMouseOver• onMouseOut• onMouseMove

• onKeyPress• onKeyUp• onKeyDown • onChange

(su text fields)

• onLoad• Altri…

– Alcuni eventidipendono dallospecifico browser

10

A.

Bech

ini 2

00

4

FunzioniFunzioni JavaScriptJavaScript

• JavaScript fornisce il meccanismo delle “funzioni” per rendere più flessibile la programmazione

• Sintassi:

function myFunction(<args>) {<codice JavaScript>

}

Parola chiave

Nome funzione

Page 6: Programmazione client-side: JavaScript · JavaScript 2 A. Bechini 2004 JavaScript: Introduzione • JavaScript è un linguaggio di programmazione/scripting molto flessibile, utilizzato

6

11

A.

Bech

ini 2

00

4EsempioEsempio: : usouso di di funzionifunzioni

...<body><script language="JavaScript">

<!--function f1(msg, times) {

for(i=1; i<=times; i++)document.write(msg);

} f1("I'm getting bored"+"<br>", 5);//-->

</script></body>

</html>

DEFINIZIO

NE

CHIAMATA

12

A.

Bech

ini 2

00

4

Variabili Variabili JavaScriptJavaScript

• Una variabile è un nome associato a un dato• Può contenere valori di qualsiasi tipo• Prima di poterla usere,

occorre dichiararla con la parola chiave var(ed eventualmente inizializzarla): se non lo si fa esplicitamente, JS lo fa implicitamente

...var i;var x = 5;

x = “Che bella giornata!”var z = 0;

...

Page 7: Programmazione client-side: JavaScript · JavaScript 2 A. Bechini 2004 JavaScript: Introduzione • JavaScript è un linguaggio di programmazione/scripting molto flessibile, utilizzato

7

13

A.

Bech

ini 2

00

4Funzioni Funzioni ed event handlered event handler

• Si può specificare di richiamare una funzione al verificarsi di un evento

...<body>

<script language="JavaScript"><!--function f2(x, y) {

alert (x*y);} //-->

</script><H2>5 times 4 =</H2><form><input type="button" value="ANSWER"

onClick="f2(5,4)"></form>

...

DEFINIZIONE

CHIAMATA

14

A.

Bech

ini 2

00

4

GliGli oggettioggetti JavaScriptJavaScript

• Al caricamento di una pagina web, il browser crea un insieme di oggetti che la definiscono e permettono di maneggiarla.

• Questi oggetti comprendono:– La finestra padre della pagina– L’URL della pagina corrente– La storia della sessione utente– Le proprietà del documento, p.es. il colore dello

sfondo, il titolo, e i form HTML di input.

• Nel browser, questi oggetti sono organizzati in una gerarchia.

Page 8: Programmazione client-side: JavaScript · JavaScript 2 A. Bechini 2004 JavaScript: Introduzione • JavaScript è un linguaggio di programmazione/scripting molto flessibile, utilizzato

8

15

A.

Bech

ini 2

00

4

La La gerarchiagerarchia deglidegli oggettioggettiJavaScriptJavaScript

• Si utilizzano questi oggetti per intervenire sulla pagina web

• P. es., per intervenire sullo sfondo, ci si riferisce a self.bgcolor

• Alcuni elementi della pagina tipicamente compaiono in istanze multiple (p.es. link e form): in questo caso a un oggetto corrisponde in realtà un array

• Es: La seconda immagine della pagina sarà document.images[1]

• In alternativa, si può usare il nome esplicitamente assegnato all’ “elemento”:

• document.myPrettyFace

navigator

window

self, window, parent, top

location

history

document

forms[]

links[]

images[]

anchors[]

elements[]

frames[]

screen

applets[]

DOM

16

A.

Bech

ini 2

00

4

Aprire nuove finestreAprire nuove finestre

• JavaScript permette di aprire nuove finestre del browser

• Tali finestre possono essere usate per visualizzare nuovi documenti (p.es. Pagine web o immagini)

• I documenti da visualizzare possono anche essere generati al volo da JavaScript

• L’apertura può essere fatta come specificato nel seguente esempio

Page 9: Programmazione client-side: JavaScript · JavaScript 2 A. Bechini 2004 JavaScript: Introduzione • JavaScript è un linguaggio di programmazione/scripting molto flessibile, utilizzato

9

17

A.

Bech

ini 2

00

4...<body><script language="JavaScript"><!--function oW() {w = window.open("http://disney.go.com/");

} //-->

</script><form><input type="button"

value="GO TO DISNEY" onClick="oW()">

</form>...

18

A.

Bech

ini 2

00

4

ProprietàProprietà di di unauna finestrafinestra

• Si possono specificare le varie caratteristiche di una finestra:

• Dimensioni, presenza di toolbar, menubar, statusbar, possibilità di ridimensionare, ecc.

function oW() {w = window.open(“doc.html”, “WindowName”, “width=400,height=300,status=yes,menubar=no,resizable=no”

);}

Page 10: Programmazione client-side: JavaScript · JavaScript 2 A. Bechini 2004 JavaScript: Introduzione • JavaScript è un linguaggio di programmazione/scripting molto flessibile, utilizzato

10

19

A.

Bech

ini 2

00

4OperareOperare suisui formform

• Una tipica operazione che si può svolgere sullato client per migliorare le prestazioni di un’applicazione web è l’elaborazione preventivadei dati presenti nei form HTML.

• Uno degli impieghi più tipici di JavaScript è la validazione dei dati nei form.

• Questa operazione consiste nel controllare che i vari campi di un form siano stati riempiti con dati del tipo corretto,prima di inviare la request al server.

20

A.

Bech

ini 2

00

4

Validazione deiValidazione dei form (I)form (I)

This checks the value of the text field.

Create a text field where the user is asked to type in their name.

...<body><script language="JavaScript"><!--function checkIt() {

if(document.forms[0].minnie.value == "")alert ("Your name is needed!")

elsealert ("Well done, "+document.mickey.elements[0].value);

} //-->

</script><form name="mickey">Your name: <input name="minnie" type="text" ><input type="button" value="CORRECT?" onClick="checkIt()"></form>

...

Funzione di va

lidazione

Chiamata

handler

Rif. con nome

Rif. oggetto

DOM

Page 11: Programmazione client-side: JavaScript · JavaScript 2 A. Bechini 2004 JavaScript: Introduzione • JavaScript è un linguaggio di programmazione/scripting molto flessibile, utilizzato

11

21

A.

Bech

ini 2

00

4Validazione deiValidazione dei form (II)form (II)

22

A.

Bech

ini 2

00

4

ValidazioneValidazione deidei form (III)form (III)

• Nell’esempio precedente si è controllatosemplicemente che una qualsiasi stringa fosse stata inserita.

• Per ingannare questo controllo, basterebbeinserire degli spazi in quel campo.

• In pratica, dobbiamo usare funzioni piùcomplicate. Per esempio, per vedere se è statoinserito il carattere ‘@’ in un campo per l’indirizzo e-mail:

document.forms[1].elements[3].value.indexOf(‘@’, 0) == -1

Page 12: Programmazione client-side: JavaScript · JavaScript 2 A. Bechini 2004 JavaScript: Introduzione • JavaScript è un linguaggio di programmazione/scripting molto flessibile, utilizzato

12

23

A.

Bech

ini 2

00

4JavaScript & JavaScript & immaginiimmagini

<html><head> </head> <body>

<img src="d1.jpg" name ="delph"onMouseOver="document.delph.src='d2.jpg'">

</body></html>

24

A.

Bech

ini 2

00

4

I “rollover”I “rollover”

• Si tratta di semplici animazioni che hanno luogo quando si posiziona il cursore del mouse sopra un elemento della pagina

...<img src="smallflower.jpg" onMouseOver="a=window.open('BIGflower.jpg')"onMouseOut="a.close()">

</img>...