SlideShare ist ein Scribd-Unternehmen logo
1 von 90
Downloaden Sie, um offline zu lesen
Javascript


Autore: Giuseppe Dell’Abate
Principi di base
Diffusione di Internet
Negli anni ‘90 la crescente diffusione di internet viene progressivamente
supportata da vari fattori:
    L’affermazione del linguaggio HTML per la realizzazione dei siti web
    in modalità statica
    La diffusione di estensioni dinamiche D-HTML per rendere “meno”
    statiche le pagine HTML lato client
    L’evoluzione di linguaggi di scripting per il supporto di pagine
    dinamiche lato client
    Lo sviluppo di nuove tecnologie web (Servlet, Applet, ASP) per
    realizzare il dinamismo delle pagine lato client e lato server
Lato Client e lato Server
Tecnologie lato client:
    Nelle tecnologie lato client la dinamicità e l’interazione con l’utente
    sono gestite direttamente da codice eseguito dal client o da un suo
    plugin.
    Attraverso l’utilizzo di:
         Linguaggi di scripting: Javascript , VBscript, Jscript
         Plugins dei Browser: JVM per esecuzione di Applet
Tecnologie lato server:
    Nelle tecnologie lato server, il client ha un ruolo essenzialmente
    passivo ed è il server a gestire la parte dinamica.
    Attraverso l’utilizzo di:
         Common Gateway Interface, le Active Server Pages (ASP) di
         Microsoft, le Servlet e le Java Server Pages
Lato Client e lato Server
Tecnologie miste:
    Le tecnologie miste fanno uso di plugin sia lato client che lato server
    che interagiscono direttamente tra loro scavalcando il normale canale
    di comunicazione client–server
    Attraverso:
         L’uso congiunto di Applet e Servlet Java.
         Real Player, Macromedia Flash, ecc., i quali consentono al
         server di inviare e al client di ricevere, suoni e animazioni
Nascita di Javascript
Data la forte diffusione di linguaggi di scripting che, inseriti nel
codice HTML, permettono all’utente di interagire con la rete, occorre
istruire i browser alla comprensione di questi nuovi linguaggi



Nel 1995 Brenda Eich della Netscape Communication
Corporation sviluppò Javascript e lo introdusse nel browser,
inizialmente con il nome di Mocha, successivamente di LiveScript e
solo in seguito rinominato Javascript
Nel 1995 Sun Microsystem introdusse le Applet Java che
permettevano all’utente di interagire, sempre lato client.
Microsoft che disponeva di un browser molto limitato, produsse
JScript che ebbe però poco successo
Vantaggi e Svantaggi
Il linguaggio di scripting, rispetto al linguaggio di programmazione,
presenta:
Vantaggi:
      Sicurezza: non può accedere a informazioni riservate
      Visibilità: codice in chiaro ed in continua evoluzione
      Lato Client: non carica il server
Svantaggi:
      Limitate capacità: deve delegare i linguaggi di
      programmazione per effettuare altre operazioni
      Download totale: deve essere scaricato tutto il codice per
      interpretarlo
      Lato Client: può caricare eccessivamente il client
Caratteristiche
Javascript presenta diverse caratteristiche:
    E’ un linguaggio di scripting
         Consente di effettuare alcune operazioni ma non di gestire
         completamente tutte le funzionalità messe a disposizione dal
         Sistema Operativo
    E’ basato sugli oggetti
         Gli oggetti vengono utilizzati per la programmazione ma non è
         possibile sfruttare polimorfismo, ereditarietà, tipizzazione
    E’ guidato dagli eventi
         Gli eventi consentono di eseguire delle azioni
    E’ indipendente dalla piattaforma
         Tutti i browser che supportano la specifica sanno eseguire lo script,
         indipendentemente dal Sistema Operativo residente
    E’ standardizzato
         La ECMA ha standardizzato Javascript nel 1997 con il nome
         ECMAScript ed inoltre è uno standard ISO
Versioni e limiti
Nel 1996 Netscape sottopose JavaScript al processo di
standardizzazione da parte dell’ECMA
Nel giugno 1997 fu adottata la versione 1.1 e fu definita ECMAScript
o ECMA-262
Le versioni devono essere recepite nei browser per essere adottate.
Solo la versione javascript 1.1 è stata recepita da tutti i browser.
Solo la parte CORE fa parte dello standard, quindi solo le istruzioni
di base del linguaggio (non l’oggetto windows ! )
Motori Javascript
Javascript è un linguaggio interpretato che necessita di un “motore”
di esecuzione che esegua il codice sorgente.
I browser incorporano un motore javascript che ha recepito la
specifica dell’ECMA
L’engine solitamente è sviluppato in C e prevede la compilazione
JIT:
     Opera 10: utilizza Carakan, prima (v.9) Linear B, ancor prima
     (v.8 e v.7) Futhark
     Internet Explorer 9 : utilizza Chakra, prima (v.8) JScript
     Mozilla Firefox 3.5 utilizza TraceMonkey, prima (v.3)
     SpiderMonkey
     Google Chrome utilizza V8
Primi script
Il browser riconosce i codice Javascript in quanto viene utilizzato il
tag HTML
      <script> …codice javascript … </script>
Se il browser non supporta lo script allora visualizzerà il codice
senza interpretarlo
Per evitare questo problema il codice deve essere commentato
      <script> <!--…codice javascript… --> </script>
Se il browser non supporta lo script allora eseguirà il tag <noscript>
che informerà l’utente dei limiti del suo browser.
      <noscript> Il browser non supporta Javascript </noscript>
Primi script
    Per essere sicuri che lo script venga eseguito utilizzando il motore
    javascript presente nel browser, verrà specificato il linguaggio
    utilizzato:
<script language=“Javascript1.1”><!-- ... --> </script>
    Javascript può essere impiegato in una pagina HTML in 4 modi:
      1. Utilizzando il tag <script> ed inserendo nell’elemento il codice
      2. Utilizzando il tag <script> ed importando una pagina javascript
          esterna
      3. Utilizzando la parola chiave “javascript:” prima della sua
          invocazione.
      4. Utilizzando l’attivazione di un evento: onmouseover ecc
Primi script
File MiaProva.html
<html>
<head>
<title>MiaProva</title>
<SCRIPT LANGUAGE="JavaScript">
<!--
                                                       1) codice
function prova() {
alert("Ciao Mondo!");
}
//-->
</SCRIPT>
                                                         2) import
<SCRIPT LANGUAGE="JavaScript" src="mio.js"></SCRIPT>
</head>
<BODY>
                                                            3) key
<A HREF="javascript:alert('Hello')">Hello World!</A>      javascript
<A HREF=“#” onclick=“prova()">Ciao Mondo!</A>
</BODY>
</html>
                                                       4) evento
File mio.js
alert( “Hello World!");
Livelli
La specifica ECMAScript ha standardizzato le istruzioni che
rappresentano il CORE di Javascript, ossia le istruzioni tipiche di un
linguaggio di programmazione (tipi, array, iterazioni, condizioni) ma
NON la gestione della pagina ad opera del Browser poiché non è
disciplinata ed è stata gestita dai vendor che hanno creato degli
oggetti ad-hoc determinando l’insorgere del BOM.
Il BOM (Browser Object Model) è quella parte di Javascript che
consente l’interazione con il browser tramite l’oggetto “window”. Non
è previsto nessuno standard pertanto segue solo le scelte che sono
state effettuate dai vendor (Microsoft, Netscape). Tali aspetti sono
stati presi in carico dal W3C per determinare uno standard ed è
stato creato il DOM.
Il DOM (Document Object Model) è quella parte di Javascript
standardizzata dal W3C che prevede di gestire il documento HTML
come XML e di navigarlo e modificarlo in modo più efficiente rispetto
al BOM.
La sintassi
In ogni linguaggio occorre definire :
     Il soggetto: colui che esegui l’azione
     Il verbo: l’azione che sarà effettuata
Nei linguaggi di programmazione questo viene tradotto in
     Dati: rappresentano i valori che sono oggetto della nostra
     elaborazione.
     Istruzioni: rappresentano l’elaborazione, l’algoritmo che dovrà
     essere applicato ai dati .
La sintassi
Dati: rappresentano i valori che sono oggetto della nostra
elaborazione.
     Ogni dato viene identificato da un tipo che identifica la tipologia
     di valori
     Un nome che serve per identificare univocamente il nostro dato
     Un valore che indica il valore che abbiamo scelto di conservare
     A seconda che il loro valore sia modificabile o meno abbiamo
     variabili e costanti
Istruzioni: rappresentano l’elaborazione, l’algoritmo che dovrà
essere applicato ai dati . Possono distinguersi in istruzioni:
     elementari: che vengono messi a disposizione dal linguaggio
     utilizzato (operatori)
     complesse: sono blocchi di istruzioni che si ha necessità di
     utilizzare più volte
La sintassi
Nome:
     Non possono utilizzare dei nomi riservati dal linguaggio
     Non è possibile utilizzare spazi all’interno del nome
Assegnazione
     Utilizziamo l’operatore = per indicare che un valore deve essere
     conservato (assegnato ) ad un nome
Tipi di valori in Javascript:
     Intero: rappresenta l’insieme dei numeri interi
     Decimali: rappresenta l’insieme di numeri reali
     Logico: è un insieme contenente valori vero o falso
     Stringa: rappresenta un insieme costituito di caratteri
     Undefined: rappresenta l’assenza di valore
     null: rappresenta un valore volutamente vuoto
La sintassi
La visibilità delle variabili varia a seconda del blocco di codice in cui
viene dichiarata:
           { //non vedo la variabile pippo
           { var pippo=1;
           vedo la variabile pippo
           {//vedo la variabile pippo
           }
           {//non vedo la variabile pippo
           }
           //non vedo la variabile pippo
           }
La variabile pippo è visibile solo dal blocco che definisce la variabile
ed in quelli contenuti in esso.
La sintassi
Le istruzioni elementari si classificano in:
     Unari : richiedono un dato in ingresso (++, --, -)
          indice++
     Binari : richiedono due dati in ingresso (=, +, -, *, /, %)
     var indice = 0;
     Ternari : richiedono tre dati in ingresso (? : )
          var scelta = (indice==0) ? true : false;
     Booleani: restituiscono un valore booleano (==, !=, <, <=, >, >=)
          if ( scelta == true ) alert(‘vero!’)
     Logici: richiedono e restituiscono valori booleani (&&, ||, !)
          if ( scelta == true && indice == 0) alert(‘vero!’)
Strutture di controllo
   Le funzioni: consentono di modulare un blocco di codice e poterlo
   riutilizzare più volte.
          function nome_funzione (parametri di ingresso) {
                    //blocco di codice
                    return valore_restituito;
               }
Esempio:
          function moltiplicazione (a, b) {
               c =a*b;
          return c;
          }
Strutture di controllo
Javascript non è un linguaggio tipizzato e così come non è
necessario dichiarare il tipo di dato ( intero, stringa, booleano ) non è
necessario dichiarare il tipo di ritorno di una funzione.
Pertanto le funzioni possono tornare diversi tipi di dato o non
tornarlo affatto:
         function moltiplicazione (a, b, op) {
              If (op==‘molt’)
              return (a*b);
              else if (op==‘add’)
              return (“la somma è “ + a+b);
         }
         function(5,6,’molt’)
         function(5,6,add’)
         function(5,6,’err’)
Strutture di controllo
    Istruzioni condizionali: consentono di prendere delle decisioni in
    base ai dati inseriti
             if(condizione) {
                   //blocco istruzione
             } else {
                   //blocco istruzione
             }

Per esempio:
        a=window.prompt(“primo valore”,0);
        b=window.prompt(“primo valore”,0);
        if (a<b) document.write(a + “ è minore di “+ b);
        else document.write(a + “ è maggiore di “+ b);
Strutture di controllo
Istruzioni di selezione: permette di verificare i possibili valori
dell'espressione presa in considerazione


Sintassi:                                    Esempio:
            switch (espressione) {                     var a = 1;
            case val1:                                 switch (a) {
                                                       case 0:
            istruzioni1; break
                                                       alert("a = zero");break;
            ...                                        case 1:
            case val_n:                                alert("a = uno");break;
            istruzioni_n; break                        case 2:
            default:                                   alert("a = due");break;
                                                       case 3:
            istruzioni
                                                       alert("a = tre");break;
            }                                          default:
                                                       alert("a maggiore di 3");
                                                       }
Strutture di controllo
    Istruzioni di loop : consentono di reiterare un blocco di istruzioni
    fino a quando una condizione risulti vera:
             while(condizione) {
                  //blocco di codice
             }

Esempio:
       condizione = true;
       while(condizione) {
           a=window.prompt("Indovina il numero", a);
           if (a==5) document.write("esatto");
           condizione =false;
       }
Strutture di controllo
   Istruzioni for: consentono di reiterare un blocco di istruzioni un
   numero finito di volte
        for(definizione di variabile, condizione, incremento) {
                  //blocco di codice
             }
Esempio:
        for(var i=0;i<10;i++) {
             a=window.prompt(“Inserisci il numero", 0);
             document.write(“numero “ + (a+1) + “=“ + i);
             condizione =false;
        }
Gli oggetti
Javascript è un linguaggio basato ad oggetti, questo significa che è
possibile creare o utilizzare degli oggetti esistenti per svolgere
alcune funzionalità.
Ogni oggetto è costituito da proprietà che rappresentano dei valori
associati ad un oggetto
Ogni oggetto è costituito da metodi che forniscono il
comportamento del nostro oggetto
Gli oggetti
Javascript è un linguaggio non tipizzato che non consente di create dei tipi
ma è possibile creare degli oggetti
La libreria Core mette a disposizione degli oggetti che consentono allo
sviluppatore di facilitare l’attività di sviluppo.
Tali oggetto sono:
     Array
     Boolean
     Date
     Math
     Number
     String
Gli Array
L’oggetto Array consente di creare un array e di gestirlo tramite i propri
metodi
Un array è una lista di valori che possono essere referenziati con un nome
ed un indice

    1) Definizione di array
    nome = new Array(‘prova1’, ‘prova2’);

    2) Definizione di array
    nome = new Array(2);
    nome[0]= ‘nome1’
    nome[1]= ‘nome2’
Array mono-dimensionali
Per definire un array e' possibile usare una di queste sintassi:

Creare un oggetto Array vuoto
    nome_variabile = new Array( );
    myArray = new Array();

Creare un oggetto Array vuoto di 3 elementi
    nome_variabile = new Array( dimensione_array );
    myArray = new Array(3);

Creare un oggetto Array vuoto di N elementi valorizzati
    nome_variabile = new Array( valore1, valore2, valore3 );
    myArray = new Array('pippo', 'pluto', 'paperino');
Array mono-dimensionali
Per popolare o riassegnare dei valori alll'array creato precedentemente
occorre usare questa sintassi:
    nome_variabile[ indice_array] = valore;




Per assegnare il valore "pippo" alla variabile myArray con indice 0 (indice
di partenza dell'array)
     myArray[0] = "pippo";
Array bi-dimensionali
E' possibile creare un array bi-dimensionale assegnando ad un elemento
dell'array un nuovo array, usando questa sintassi:
     myArray = new Array();
     myArray[0] = new Array()

oppure in questo altro modo, che consente di creare un oggetto Array
nidificato
      myArray = new Array( new Array() );
Array bi-dimensionali
Per popolare o riassegnare dei valori all'array bi-dimensionale creato
precedentemente occorre indicare questa sintassi:
    nome_variabile[ indice_array ] [ indice_array ] = valore;

Questa istruzione serve per assegnare il valore "pippo" alla variabile
myArray con indice [0][0]
   myArray[0][0] = "pippo";

Sarebbe stato possibile assegnare il valore in sede di creazione, in questo
modo:
    myArray = new Array( new Array("pippo") );
Array bi-dimensionali -
          rettangolari
Sono quegli array che hanno uguale dimensione orizzontate, esempio:

myArray = new Array();
myArray[0] = new Array(2)
myArray[0][0] = 'prova1'
myArray[0][1] = 'prova2'
myArray[1] = new Array(2)
myArray[1][0] = 'prova3'
myArray[1][1] = 'prova4'
Array bi-dimensionali –
        non rettangolari
Sono quegli array che NON hanno uguale dimensione orizzontate,
esempio:

myArray = new Array();
myArray[0] = new Array(2)
myArray[0][0] = 'prova1'
myArray[0][1] = 'prova2'
myArray[1] = new Array(3)
myArray[1][0] = 'prova3'
myArray[1][1] = 'prova4'
myArray[1][2] = 'prova5'
Iterare su Array
     E' possibile iterare su un array mono-dimensionale usando il ciclo "for",
              myArray = new Array("prova1 ", "prova2");
              for(i = 0; i < myArray.length; i++){
                    document.write( myArray [i] );
              }
in questo caso verrà stampata la stringa:
     prova1 prova2
Iterare su Array
     E' possibile iterare su un array bi-dimensionale usando il ciclo "for",
          myArray = new Array(new Array('prova1 ','prova2 '), new Array
          ('prova3 ','prova4 ') );
               for(i = 0; i < myArray.length; i++){
                     for(y = 0; y < myArray[i].length; y++){
                          document.write( myArray[i][y] );
                     }
               }
in questo caso verrà stampata la stringa:
     prova1 prova2 prova3 prova4
Array dinamici
   E' possibile:
    1. creare array di dimensione variabile in base alla dimensione di
        precedenti array,
    2. assegnare un array ad una nuova variabile

1. Creazione un Array dal nome myArray2 di dimensione corrispondente a
   myArray MA VUOTO
           myArray = new Array('prova1 ','prova2 ','prova3 ');
           myArray2 = new Array( myArray.length );

2. Assegnazione alla variabile myArray3 dello stesso puntatore della
   variabile myArray, quindi con lo stesso contenuto ('prova1 ','prova2
   ','prova3 ')
         myArray3 = myArray;
Gli Array
I metodi dell’oggetto Array sono
    concat unisce 2 array e ritorna un nuovo array
    join collega tutti gli elementi di un array in una stringa
    pop rimuove l’ultimo elemento dall’array e lo ritorna
    push aggiunge un elemento all’array e lo ritorna.
    reverse inverte l’ordine degli elementi dall’array
    shift rimuove il primo elemento dall’array e lo ritorna.
    slice estrae una sezione dell’array e lo ritorna
    splice aggiunge o rimuove elementi all’array
    sort ordina gli elementi dell’array
    unshift aggiunge un elemento all’array e ritorna la lunghezza
Boolean e Date
Boolean
    Definisce un tipo boleano che può catturare valori true/false
    booleanObjectName = new Boolean( true );
    Se il valore è omesso allora avrà valore false
Date
    Permette di creare un oggetto di tipo Data che, come Java, decorre
    dal 1/1/1970 ed è espresso in milli secondi.
    Presenta solo metodi e non proprietà
                 var time = new Date()
                 var hour = time.getHours()
                 var minute = time.getMinutes()
                 var second = time.getSeconds()
                 var temp = "" + ((hour > 12) ? hour - 12 : hour)
                 temp += ((minute < 10) ? ":0" : ":") + minute
                 temp += ((second < 10) ? ":0" : ":") + second
                 temp += (hour >= 12) ? " P.M." : " A.M."
                 alert(temp)
Math
Math
   Questo oggetto consente di poter invocare tutti quei metodi che
   possono essere utilizzati per effettuare calcoli matematici
   abs valore assoluto
   sin, cos, tan funzioni trigonometriche standard
   acos, asin, atan funzioni trigonometriche inverse
   exp, log esponente e logaritmo naturale
   ceil numero intero massimo
   floor numero intero minimo
   min, max inferiore o maggiore
   pow esponenziale
   round arrotondamento all'intero + vicino
   sqrt radice quadrata
Number e String
Number
    Viene utilizzato per rappresentare dei numeri e poter li manipolare facilmente:
    MAX_VALUE rappresenta il numero + grande
    MIN_VALUE rappresenta il numero + piccolo
    NaN Special “not a number” value
    NEGATIVE_INFINITY valure infinito negativo
    POSITIVE_INFINITY valore infinito
String
    Consente di creare degli oggetti stringa e di manipolarli tramite un insieme di
    metodi
    a = new String(“prova”);
    length ritorna la lunghezza della stringa
    toUpperCase/toLowerCase trasforma in maiuscolo/minuscolo i caratteri
    substring(start, end) seleziona una parte di stringa dal punto start ad end
String
String
    anchor crea una ancora HTML
    big, blink, bold, fixed, italics, crea corrispondenti tag HTML
    small, strike, sub, sup String formattate in HTML
    charAt, charCodeAt ritorna il carattere in data posizione
    indexOf, lastIndexOf ritorna la posizione di un carattere
    link crea un HTML hyperlink
    concat concatena 2 stringhe
    split divide una stringa in un array di stringhe
    slice estrae una sezione di stringa
    match, replace, search usato con le espressioni regolari
Gli oggetti
E’ consentito, per lo sviluppatore, creare dei proprio oggetti da poter
riutilizzare come un libreria oppure da potere mettere a disposizione
della comunità degli sviluppatori
La definizione di un oggetto può essere effettuata in 3 modi distinti:
  1. Utilizzando l’oggetto Object() ed aggiungere proprietà e metodi
       ad esso.
  2. Definendo un oggetto letterale che contenga tutte le proprietà e
       metodi
  3. Definendo una funzione che usi la logica degli oggetti ( tramite
       la parola chiave this, ecc)
1) new Object()
var Anagrafica = new Object();
Anagrafica.Anagrafica = function(Nome, Giorno, Mese, Anno) {
this.Nome = Nome;
this.Giorno = Giorno;
this.Mese = Mese;
this.Anno = Anno;
};
Anagrafica.stampaOggetto = function() {
document.write ("Dati in archivio:");
document.write ("<BR>Nome: "+this.Nome);
document.write ("<BR>Giorno: "+this.Giorno);
document.write ("<BR>Mese: "+this.Mese);
document.write ("<BR>Anno: "+this.Anno);
};
Anagrafica.Anagrafica("Antonio", 11, "Novembre", 1968);
Anagrafica.stampaOggetto();
2) Oggetti letterali
var Anagrafica = {
Anagrafica: function(Nome, Giorno, Mese, Anno) {
this.Nome = Nome;
this.Giorno = Giorno;
this.Mese = Mese;
this.Anno = Anno;
},
StampaOggetto: function() {
document.write ("Dati in archivio:");
document.write ("<BR>Nome: "+this.Nome);
document.write ("<BR>Giorno: "+this.Giorno);
document.write ("<BR>Mese: "+this.Mese);
document.write ("<BR>Anno: "+this.Anno);
}
}
Anagrafica.Anagrafica("Antonio", 11, "Novembre", 1968);
Anagrafica.StampaOggetto();
3) Funzioni di oggetti
function StampaOggetto () {
      document.write ("Dati in archivio:");
      document.write ("<BR>Nome: "+this.Nome);
      document.write ("<BR>Giorno: "+this.Giorno);
      document.write ("<BR>Mese: "+this.Mese);
      document.write ("<BR>Anno: "+this.Anno);
}
function Anagrafica (Nome, Giorno, Mese, Anno) {
      this.Nome = Nome;
      this.Giorno = Giorno;
      this.Mese = Mese;
      this.Anno = Anno;
      this.Visualizza = StampaOggetto;
}
var Antonio = new Anagrafica ("Antonio", 11, "Novembre", 1968);
Antonio.Visualizza();
Il BOM
Javascript prevede 3 tipologie di oggetti:
    Ereditati dalle librerie CORE
    Creati dallo sviluppatore
    Creati dal Browser ( BOM )

Questa terza tipologia di oggetti è costituita da tutti quegli oggetti
che vengono creati dal browser per memorizzare il documenti HTML
e tutte le informazioni relative al browser, allo schermo e necessarie
per il corretto funzionamento
Lo sviluppatore può interagire con questi oggetti ma, nel caso di
oggetti BOM che non sono oggetto di specifica, occorre gestire le
differenze esistenti tra i browser, il modo in cui tali oggetti vengono
creati ed i metodi che mettono a disposizione.
Gli oggetti BOM
Quando programmate con JavaScript dovete immaginare che la
pagina del browser sia formata da vari oggetti in relazione fra loro:
    prima di tutto c'è il browser stesso (l'oggetto window.navigator)
    poi la finestra che contiene il tutto (l'oggetto window)
           eventuali frames (l'oggetto window.frames)
    il documento HTML vero e proprio (window.document)
           i moduli per raccogliere l'input dell'utente (document.forms
           ["nomeForm"])
           le immagini (document.images["nomeImmagine"])
           i cookie (document.cookie["nomeCookie"])
           le applet (document.applets["nomeApplet"])
    la barra degli indirizzi (window.location)
    I siti visitati del browser (window.history)
    Le informazioni del monitor dell’utente (window.screen)
L’oggetto navigator
L’oggetto navigator serve per ottenere delle informazioni sul browser e
sulla configurazione del sistema:
Navigator Object Collections
     plugins[] informazioni dei plugins istallati
Navigator Object Properties
     appCodeName Nome in codice del browser
     appMinorVersion Minor version del browser
     appName Nome del browser
     appVersion Piattaforma e versione del browser
     browserLanguage Lingua del browser
     cookieEnabled Abilitazione o meno dei cookies
     cpuClass Classe di CPU
     onLine Navigazione offline o online
L’oggetto navigator
    platform Sistema operativo
    systemLanguage Lingua del sistema operativo
    userAgent user-agent utilizzato
    userLanguage lingua di default

Navigator Object Methods
    javaEnabled() Java abilitato
L’oggetto window
L’oggetto window è
l'oggetto di massimo livello
nella gerarchia dei clienti di
Javascript.
Un oggetto window può
rappresentare sia una
finestra di livello top o un
frame all'interno di un
frameset.
L’oggetto window
Frames e finestre
   frames Un raggruppamento (array) che riflette tutti i frame della
   finestra.
   length Il numero dei frames nella finestra.
   parent Un sinonimo per indicare una finestra o un frame il cui
   frameset contiene il frame corrente.
   self Un sinonimo per indicare la finestra corrente.
   window Un sinonimo per indicare la finestra corrente.
   top Un sinonimo per indicare la finestra più in alto nel browser.
   opener Specifica il nome della finestra di un certo documento
   quando una finestra viene aperta usando il metodo "open".
   name Un nome unico usato per riferirsi a questa finestra.
L’oggetto window
Messaggi utente
   alert Mostra una casella-dialogo di Allarme (Alert Box), con un
   messaggio e un bottone "OK".
   confirm Mostra una casella-dialogo di Conferma (Confirm Box), con
   uno specifico messaggio e i bottoni "OK" e "Annulla".
   prompt Mostra una casella-dialogo di Informazione (Prompt Box)
   con un messaggio e una zona di inserimento dati.

status
    defaultStatus messaggio di default mostrato sulla barra di status
    della finestra.
    status Specifica una priorità o un messaggio transitorio nella barra
    di status della finestra.
L’oggetto window
Barre
    statusbar Rappresenta la barra di status della finestra del browser.
    personalbar Rappresenta la barra personale della finestra del
    browser (altrimenti chiamata barra delle directory).
    scrollbars Rappresenta le barre di scorrimento della finestra del
    browser.
    toolbar Rappresenta la barra degli strumenti della finestra del
    browser.
    locationbar Rappresenta la barra di locazione della finestra del
    browser.
    menubar Rappresenta la barra di menù della finestra del browser.
L’oggetto window
Timeout ed intervalli
   clearTimeout Cancella una scadenza di tempo che era stata
   inserita con il metodo setTimeout.
   setTimeout Valuta un'espressione o richiama una funzione allo
   scadere di una definita quantità di millisecondi.
   clearInterval Cancella una scadenza di tempo che era stata inserita
   con il metodo setInterval .
   setInterval Valuta un'espressione o chiama una funzione ogni volta
   che una certa quantità di millisecondi è scaduta.
L’oggetto window
Gestione finestre
    open Apre una nuova finestra del web browser.
    close Chiude la finestra indicata.
    closed Specifica se una finestra è stata chiusa.
    stop Interrompe lo scaricamento corrente.
Varie
    print Stampa i contenuti della finestra o del frame.
    blur Elimina il fuoco dall'oggetto specificato.
    focus Mette a fuoco l'oggetto specificato.
    find Trova una specifica stringa di testo nei contenuti di una
    specifica finestra
    home Dirige il browser sull'URL indicato nelle preferenze come
    home page dell'utente.
L’oggetto window
Eventi sulle finestre
   onDragDrop L'utente rilascia un oggetto, per esempio un file, sulla
   finestra del browser.
   onLoad Il browser finisce di caricare una finestra o tutti i frames
   all'interno di un tag FRAMESET.
   onMove L'utente (o il programma) sposta una finestra o un frame.
   onResize L'utente (o il programma) cambia le dimensioni di una
   finestra o di un frame
   onUnload L'utente fa il refresh di una finestra
   onBlur Un elemento di forma va fuori fuoco o quando una finestra o
   un frame vanno fuori fuoco.
   onError L'atto di scaricare un documento o un'immagine provoca un
   errore.
   onFocus Una finestra, frame o frameset riceve fuoco o quando un
   elemento di forma riceve un input "fuoco“.
L’oggetto window
Gestori eventi
   captureEvents Permette alla finestra o al documento di catturare
   tutti gli eventi del tipo indicato.
   disableExternalCapture Disconnette la cattura di eventi esterni
   installata col metodo enableExternalCapture.
   enableExternalCapture Permette a una finestra con frames di
   catturare eventi in pagine caricate da locazioni diverse (servers).
   handleEvent Richiama lo strumento che manipola un evento (event
   handler) specificato.
   releaseEvents Mette al finestra in condizione di rilasciare eventi del
   tipo specificato, mandando l'evento agli oggetti più avanti nella
   gerarchia degli eventi.
   routeEvent Fa passare un evento catturato attraverso la normale
   gerarchia degli eventi.
L’oggetto document
L’oggetto document permette di ottenere un riferimento al documento
HTML ed agli elementi definiti in esso
L'oggetto espone solo pochi metodi:
    open(): apre un flusso di informazione
    close() chiude un flusso di informazioni
    write() e writeln() scrivono nella pagina formattata in HTML una
    stringa passata come parametro.
Le proprietà disponibili sono relative:
 1. Agli attributi del tag <body>
         fgColor e bgColor si riferiscono agli attributi text e background per
         indicare il colore di primo piano e di sfondo della pagina
 2. Alle proprietà del documento HTML
         title: titolo del documento HTML
 3. Al contenuto del documento HTML ( segue … )
L’oggetto document
Tutti gli elementi presentano
     proprietà:
           name: ricava il nome del campo
           value: imposta o ricava il valore del campo
           type: specifica il tipo di campo
     metodi:
           focus() e blur(): per ottenere o rilasciare il focus
A seconda del tipo di elemento HTML cui ci si riferisce, è possibile gestire
diverse proprietà in modo da ottenere informazioni sull’elemento in
questione, per esempio:
     Caselle di testo <input type=text> (size, maxLength, select(),
     onchange)
     Aree di testo <textarea> (rows e cols )
     Pulsanti di opzione <input type=checkbox> (checked )
     Liste <select> <option> (options, selectedIndex, text , index )
L’oggetto document
Esempio di oggetto document

<SCRIPT LANGUAGE="JavaScript">
function visualizza() {
alert(document.statform.userName.value)
}
</SCRIPT>
<FORM NAME="statform">
<INPUT TYPE = "text" name = "userName" size = 20 onchange="visualizza()">
</FORM>
L’oggetto location
   Tale oggetto consente di ottenere informazioni sull’URL della pagina
   corrente tramite le proprietà:


     port                  href                   hash


http://www.google.com:80/search?q=java#miotag




protocol               pathname

            hostname                   search
L’oggetto location
L’oggetto location contiene 2 metodi:
    replace(): ordina al browser di sostituire la pagina attuale con la
    pagina dell’URL specificata
    reload(): ricarica la pagina dal server
L’oggetto history
L’oggetto history da accesso limitato ai siti visitati dal browser.
Per motivi di sicurezza è possibile sapere solo la lunghezza della history
dell’utente.
I metodi disponibili sono tre:
     go(): indica di quante pagine si vuole andare avanti o indietro
     back(): emula il pulsante indietro del browser di una posizione
     forward(): emula il pulsante avanti del browser di una posizione
L’oggetto screen
L’oggetto screen consente di avere informazioni sulla dimensione dello
schermo dell’utente in base alla configurazione attuale e potenziale, in
modo da poter dimensionare in modo ottimale la dimensione del browser.
Utilizzando le proprietà di questo oggetto è possibile ottenere delle
informazioni utente ed utilizzando i metodi dell’oggetto window sarà
possibile modificare il dimensionamento del browser
L’oggetto screen
Proprietà
    scroll Fa scorrere una finestra secondo una coordinata specificata.
    innerHeight Specifica la dimensione verticale, in pixel, dell'area di
    contenuto della finestra.
    innerWidth Specifica la dimensione orizzontale, in pixel, dell'area di
    contenuto della finestra.
    outerHeight Specifica la dimensione verticale, in pixel, del margine
    esterno della finestra.
    outerWidth Specifica la dimensione orizzontale, in pixel, del margine
    esterno della finestra.
    pageXOffset Fornisce la posizione x corrente, in pixel, di una pagina
    mostrata della finestra.
    pageYOffset Fornisce la posizione y corrente, in pixel, di una pagina
    mostrata della finestra.
L’oggetto screen
Metodi di windows da utilizzare
   moveBy() Muove la finestra secondo quantità specificate.
   moveTo () Muove l'angolo in alto a sinistra della finestra secondo le
   specificate coordinate dello schermo.
   resizeBy () Dà nuove dimensioni a un'intera finestra muovendo l'angolo in
   basso a destra secondo una quantità indicata.
   resizeTo() Dà nuove dimensioni a un'intera finestra secondo le indicate
   dimensioni esterne di altezza e larghezza.
   scrollBy() Fa scorrere l'area di visualizzazione di una finestra secondo
   quantità definite.
   scrollTo() Fa scorrere l'area di visualizzazione della finestra secondo
   coordinate definite, in modo che il punto indicato diventi l'angolo superiore
   sinistro.
I Cookies
I Cookies consentono di conservare nel browser dell’utente delle
informazioni che possono essere utilizzate nel momento in cui l’utente
accede nuovamente al sito.
Ogni dominio può salvare nel browser dell’utente massimo 20 cookies
Si tratta di file di testo che contengono delle informazioni, quali:
     Nome
     Data di scadenza
     Dominio
     Percorso
I Cookies
function setCookie(NameOfCookie, value, expiredays) {
var ExpireDate = new Date ();
ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 *
1000));
document.cookie = NameOfCookie + "=" + escape(value) + ((expiredays
== null) ? "" : "; expires=" + ExpireDate.toGMTString());
}

function delCookie (NameOfCookie) {
if (getCookie(NameOfCookie)) {
document.cookie = NameOfCookie + "=" + "; expires=Thu, 01-Jan-70 00:
00:01 GMT";
}
}
I Cookies
function getCookie(NameOfCookie){
if (document.cookie.length > 0) {
begin = document.cookie.indexOf(NameOfCookie+"=");
if (begin != -1) {
begin += NameOfCookie.length+1;
end = document.cookie.indexOf(";", begin);
if (end == -1) end = document.cookie.length;
return unescape(document.cookie.substring(begin, end));
}
}
return null;
}
Gli eventi
     In seguito alle azioni che decide di effettuare l’utente, vengono a
     crearsi degli eventi che devono essere gestiti
     La gestione di un evento indica la necessità di richiamare delle
     funzioni pertanto abbiamo la presenza di handler ossia “gestori degli
     eventi” che hanno il compito di richiamare la funzione appropriata
     per quell’evento
<a href=“pagina.html” onclick=”alert(‘ciao’)”>link</a>
Nell’esempio precedente:
     onclick: è il gestore degli eventi
     alert(‘ciao’): è l’attività associata al verificarsi dell’evento che verrà
     avviata dal gestore
Gli eventi
Nel corso del tempo il numero degli eventi è progressivamente
aumentato
Possiamo distinguerli in 5 categorie:
    Eventi di sistema : onLoad, onUnload, onAbort, onError
    Eventi legati al mouse: onClick, onMouseOver, onMouseOut
    Eventi attivabili alle modifiche dell’utente: onChange
    Eventi legati al fuoco: onFocus, onBlur, onSelect
    Eventi legati a particolari bottoni: onSubmit, onReset
Gli eventi
Eventi di sistema :
   onLoad: si attiva quando la pagina html viene caricata
   onUnload: si attiva quando la pagina html viene abbandonata
   (pressione di un link, chiusura finestra)
   onAbort: si attiva quando l’utente preme il tasto stop e ESC
   onError: si attiva quando si verifica un errore durante il
   caricamento di un oggetto

Eventi legati al mouse:
   onClick: si attiva quando l’utente clicca su un oggetto
   onMouseOver: si attiva quando l’utente passa il mouse su un
   oggetto
   onMouseOut:: si attiva quando l’utente passa il mouse lontano
   dall’oggetto
Gli eventi
Eventi attivabili alle modifiche dell’utente:
   onChange: si attiva quando l’utente effettua delle modifiche ad
   un oggetto testo, area di testo, password

Eventi legati al fuoco:
   onFocus: si attiva quando l’utente attiva un determinato oggetto
   onBlur: si attiva quando l’utente non utilizza un determinato
   oggetto
   onSelect: si attiva quando l’utente seleziona delle caselle di
   testo

Eventi legati a particolari bottoni:
   onSubmit: quando l’utente effettua l’invio di una form
   onReset: quando l’utente clicca sul tasto “annulla” di una form
Il DOM
Il DOM (Document Object Model) è il frutto di una specifica del W3C
per consentire di navigare il documento HTML come una struttura
XML ed accedere a tutti i suoi elementi
Ancor oggi si continua ad utilizzare il BOM in quanto è più intuitivo e
per problemi di compatibilità
Il DOM presenta un documento HTML come una struttura ad albero
composta da elementi attributi e testo
Il DOM definisce una modalità standard per accedere e manipolare
documenti HTML
Il DOM
Il DOM
Per ogni elemento di un albero DOM è possibile accedere,
modificarlo, cancellarlo e ricrearlo
Il primo elemento si chiama root e non ha padre
Gli elementi senza figli si chiamano leaf (foglia)
Gli elementi che possiedono lo stesso padre si chiamano siblings
(fratelli)
Il DOM
Proprietà DOM
   x.innerHTML - il codice html dell'elemento x
   x.nodeName - il nome di x
   x.nodeValue - il valore di x
   x.parentNode - il nodo padre di x
   x.childNodes - il nodo figlio di x
   x.nextSibling – il successivo nodo fratello di x
   x.previousSibling – il successivo nodo fratello di x
   x.attributes - gli attributi di x


Metodi DOM
   x.getElementById(id) - recupera il nodo in base al nome
   x.getElementsByTagName(name) - recupera tutti i nodi in base al nome
   x.appendChild(node) - inserisce un nodo figlio ad x
   x.removeChild(node) - rimuove un nodo figlio a x
Il DOM
<html>
<body><p align="center" id="ciccio"><b>prova</b></p></body>

    <script language="javascript">
    alert(document.getElementById("ciccio").parentNode.nodeName );
    alert(document.getElementById("ciccio").nodeName)
    alert(document.getElementById("ciccio").attributes[0].nodeName);
    alert(document.getElementById("ciccio").attributes[0].nodeValue);
    alert(document.getElementById("ciccio").innerHTML)
    alert(document.getElementById("ciccio").childNodes[0].nodeName);
    </script>

</html>

Weitere ähnliche Inhalte

Was ist angesagt?

Integrating React.js with PHP projects
Integrating React.js with PHP projectsIntegrating React.js with PHP projects
Integrating React.js with PHP projectsIgnacio Martín
 
JavaScript Tutorial
JavaScript  TutorialJavaScript  Tutorial
JavaScript TutorialBui Kiet
 
LinkedList vs Arraylist- an in depth look at java.util.LinkedList
LinkedList vs Arraylist- an in depth look at java.util.LinkedListLinkedList vs Arraylist- an in depth look at java.util.LinkedList
LinkedList vs Arraylist- an in depth look at java.util.LinkedListMarcus Biel
 
OOP Best Practices in JavaScript
OOP Best Practices in JavaScriptOOP Best Practices in JavaScript
OOP Best Practices in JavaScriptHaim Michael
 
SOLID Design Principles
SOLID Design PrinciplesSOLID Design Principles
SOLID Design PrinciplesAndreas Enbohm
 
javaScript.ppt
javaScript.pptjavaScript.ppt
javaScript.pptsentayehu
 
JavaScript - Chapter 15 - Debugging Techniques
 JavaScript - Chapter 15 - Debugging Techniques JavaScript - Chapter 15 - Debugging Techniques
JavaScript - Chapter 15 - Debugging TechniquesWebStackAcademy
 
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹
炎炎夏日學 Android 課程 -  Part1: Kotlin 語法介紹炎炎夏日學 Android 課程 -  Part1: Kotlin 語法介紹
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹Johnny Sung
 
用十分鐘 向jserv學習作業系統設計
用十分鐘  向jserv學習作業系統設計用十分鐘  向jserv學習作業系統設計
用十分鐘 向jserv學習作業系統設計鍾誠 陳鍾誠
 

Was ist angesagt? (20)

Clean code
Clean codeClean code
Clean code
 
CSS
CSSCSS
CSS
 
Integrating React.js with PHP projects
Integrating React.js with PHP projectsIntegrating React.js with PHP projects
Integrating React.js with PHP projects
 
JavaScript Tutorial
JavaScript  TutorialJavaScript  Tutorial
JavaScript Tutorial
 
LinkedList vs Arraylist- an in depth look at java.util.LinkedList
LinkedList vs Arraylist- an in depth look at java.util.LinkedListLinkedList vs Arraylist- an in depth look at java.util.LinkedList
LinkedList vs Arraylist- an in depth look at java.util.LinkedList
 
Html
HtmlHtml
Html
 
OOP Best Practices in JavaScript
OOP Best Practices in JavaScriptOOP Best Practices in JavaScript
OOP Best Practices in JavaScript
 
Javascript 101
Javascript 101Javascript 101
Javascript 101
 
Introduction to Bootstrap
Introduction to BootstrapIntroduction to Bootstrap
Introduction to Bootstrap
 
React - Introdução
React - IntroduçãoReact - Introdução
React - Introdução
 
SOLID Design Principles
SOLID Design PrinciplesSOLID Design Principles
SOLID Design Principles
 
Javascript
JavascriptJavascript
Javascript
 
javaScript.ppt
javaScript.pptjavaScript.ppt
javaScript.ppt
 
jQuery
jQueryjQuery
jQuery
 
JavaScript - Chapter 15 - Debugging Techniques
 JavaScript - Chapter 15 - Debugging Techniques JavaScript - Chapter 15 - Debugging Techniques
JavaScript - Chapter 15 - Debugging Techniques
 
Git training v10
Git training v10Git training v10
Git training v10
 
JavaScript - Part-1
JavaScript - Part-1JavaScript - Part-1
JavaScript - Part-1
 
Introduction to gradle
Introduction to gradleIntroduction to gradle
Introduction to gradle
 
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹
炎炎夏日學 Android 課程 -  Part1: Kotlin 語法介紹炎炎夏日學 Android 課程 -  Part1: Kotlin 語法介紹
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹
 
用十分鐘 向jserv學習作業系統設計
用十分鐘  向jserv學習作業系統設計用十分鐘  向jserv學習作業系統設計
用十分鐘 向jserv學習作業系統設計
 

Andere mochten auch

App Mapping - a selection of free applications to support first year students
App Mapping - a selection of free applications to support first year studentsApp Mapping - a selection of free applications to support first year students
App Mapping - a selection of free applications to support first year studentsTrevor Boland
 
corso web developer - Introduzione a Javascript
corso web developer - Introduzione a Javascriptcorso web developer - Introduzione a Javascript
corso web developer - Introduzione a JavascriptRiccardo Piccioni
 
Gli strumenti social e l’usabilità al servizio della scuola: da MatchPoint a ...
Gli strumenti social e l’usabilità al servizio della scuola: da MatchPoint a ...Gli strumenti social e l’usabilità al servizio della scuola: da MatchPoint a ...
Gli strumenti social e l’usabilità al servizio della scuola: da MatchPoint a ...Cineca
 
Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScriptGiovanni Buffa
 
Python: The Iterator Pattern
Python: The Iterator PatternPython: The Iterator Pattern
Python: The Iterator PatternDamian T. Gordon
 
Introduction to Python programming
Introduction to Python programmingIntroduction to Python programming
Introduction to Python programmingDamian T. Gordon
 
Python: Common Design Patterns
Python: Common Design PatternsPython: Common Design Patterns
Python: Common Design PatternsDamian T. Gordon
 
Prototyping and Wireframing tools
Prototyping and Wireframing toolsPrototyping and Wireframing tools
Prototyping and Wireframing toolsDamian T. Gordon
 
Ley islr reforma dic 2015
Ley islr reforma dic 2015Ley islr reforma dic 2015
Ley islr reforma dic 2015Freddy Campos
 

Andere mochten auch (20)

Design Pattern
Design PatternDesign Pattern
Design Pattern
 
Corso progettazione
Corso progettazioneCorso progettazione
Corso progettazione
 
Corso UML
Corso UMLCorso UML
Corso UML
 
Corso di servlet jsp e pattern
Corso di servlet jsp e patternCorso di servlet jsp e pattern
Corso di servlet jsp e pattern
 
Corso Java 3 - WEB
Corso Java 3 - WEBCorso Java 3 - WEB
Corso Java 3 - WEB
 
Corso Java 2 - AVANZATO
Corso Java 2 - AVANZATOCorso Java 2 - AVANZATO
Corso Java 2 - AVANZATO
 
Corso Java
Corso JavaCorso Java
Corso Java
 
Corso Java 1 - BASE
Corso Java 1 - BASECorso Java 1 - BASE
Corso Java 1 - BASE
 
App Mapping - a selection of free applications to support first year students
App Mapping - a selection of free applications to support first year studentsApp Mapping - a selection of free applications to support first year students
App Mapping - a selection of free applications to support first year students
 
corso web developer - Introduzione a Javascript
corso web developer - Introduzione a Javascriptcorso web developer - Introduzione a Javascript
corso web developer - Introduzione a Javascript
 
Corso web services
Corso web servicesCorso web services
Corso web services
 
Gli strumenti social e l’usabilità al servizio della scuola: da MatchPoint a ...
Gli strumenti social e l’usabilità al servizio della scuola: da MatchPoint a ...Gli strumenti social e l’usabilità al servizio della scuola: da MatchPoint a ...
Gli strumenti social e l’usabilità al servizio della scuola: da MatchPoint a ...
 
Introduzione a jQuery
Introduzione a jQueryIntroduzione a jQuery
Introduzione a jQuery
 
Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScript
 
How to Program
How to ProgramHow to Program
How to Program
 
Python: The Iterator Pattern
Python: The Iterator PatternPython: The Iterator Pattern
Python: The Iterator Pattern
 
Introduction to Python programming
Introduction to Python programmingIntroduction to Python programming
Introduction to Python programming
 
Python: Common Design Patterns
Python: Common Design PatternsPython: Common Design Patterns
Python: Common Design Patterns
 
Prototyping and Wireframing tools
Prototyping and Wireframing toolsPrototyping and Wireframing tools
Prototyping and Wireframing tools
 
Ley islr reforma dic 2015
Ley islr reforma dic 2015Ley islr reforma dic 2015
Ley islr reforma dic 2015
 

Ähnlich wie Corso Javascript

Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerMatteo Magni
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerMatteo Magni
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTfirenze-gtug
 
Progettato per specialisti del web
Progettato per specialisti del webProgettato per specialisti del web
Progettato per specialisti del webEugenio Uccheddu
 
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e AjaxProgettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e AjaxGiovanni Cappellini
 
Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)Giuseppe Vizzari
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimizationAndrea Dottor
 
Sencha touch: panoramica e orientamento sul codice
Sencha touch: panoramica e orientamento sul codiceSencha touch: panoramica e orientamento sul codice
Sencha touch: panoramica e orientamento sul codiceGiuseppe Toto
 
Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Giorgio Carpoca
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazorNicolò Carandini
 
jQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerjQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerMatteo Magni
 
JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)jampslide
 

Ähnlich wie Corso Javascript (20)

#dd12 grillo daniele_xpages_tips_tricks_rev2
#dd12 grillo daniele_xpages_tips_tricks_rev2#dd12 grillo daniele_xpages_tips_tricks_rev2
#dd12 grillo daniele_xpages_tips_tricks_rev2
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesigner
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesigner
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWT
 
Ddive Xpage852
Ddive Xpage852Ddive Xpage852
Ddive Xpage852
 
Progettato per specialisti del web
Progettato per specialisti del webProgettato per specialisti del web
Progettato per specialisti del web
 
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e AjaxProgettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
 
Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)
 
8. Architetture web
8. Architetture web8. Architetture web
8. Architetture web
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
 
Sencha touch: panoramica e orientamento sul codice
Sencha touch: panoramica e orientamento sul codiceSencha touch: panoramica e orientamento sul codice
Sencha touch: panoramica e orientamento sul codice
 
Corso java
Corso javaCorso java
Corso java
 
Many Designs Elements
Many Designs ElementsMany Designs Elements
Many Designs Elements
 
Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Presentazione Corso - Parte 3
Presentazione Corso - Parte 3
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazor
 
Grasso Frameworks Ajax
Grasso Frameworks AjaxGrasso Frameworks Ajax
Grasso Frameworks Ajax
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
DDive11 - xpages
DDive11 - xpagesDDive11 - xpages
DDive11 - xpages
 
jQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesignerjQuery - 1 | WebMaster & WebDesigner
jQuery - 1 | WebMaster & WebDesigner
 
JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)
 

Kürzlich hochgeladen

Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoQuotidiano Piemontese
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 

Kürzlich hochgeladen (9)

Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 Torino
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 

Corso Javascript

  • 3. Diffusione di Internet Negli anni ‘90 la crescente diffusione di internet viene progressivamente supportata da vari fattori: L’affermazione del linguaggio HTML per la realizzazione dei siti web in modalità statica La diffusione di estensioni dinamiche D-HTML per rendere “meno” statiche le pagine HTML lato client L’evoluzione di linguaggi di scripting per il supporto di pagine dinamiche lato client Lo sviluppo di nuove tecnologie web (Servlet, Applet, ASP) per realizzare il dinamismo delle pagine lato client e lato server
  • 4. Lato Client e lato Server Tecnologie lato client: Nelle tecnologie lato client la dinamicità e l’interazione con l’utente sono gestite direttamente da codice eseguito dal client o da un suo plugin. Attraverso l’utilizzo di: Linguaggi di scripting: Javascript , VBscript, Jscript Plugins dei Browser: JVM per esecuzione di Applet Tecnologie lato server: Nelle tecnologie lato server, il client ha un ruolo essenzialmente passivo ed è il server a gestire la parte dinamica. Attraverso l’utilizzo di: Common Gateway Interface, le Active Server Pages (ASP) di Microsoft, le Servlet e le Java Server Pages
  • 5. Lato Client e lato Server Tecnologie miste: Le tecnologie miste fanno uso di plugin sia lato client che lato server che interagiscono direttamente tra loro scavalcando il normale canale di comunicazione client–server Attraverso: L’uso congiunto di Applet e Servlet Java. Real Player, Macromedia Flash, ecc., i quali consentono al server di inviare e al client di ricevere, suoni e animazioni
  • 6. Nascita di Javascript Data la forte diffusione di linguaggi di scripting che, inseriti nel codice HTML, permettono all’utente di interagire con la rete, occorre istruire i browser alla comprensione di questi nuovi linguaggi Nel 1995 Brenda Eich della Netscape Communication Corporation sviluppò Javascript e lo introdusse nel browser, inizialmente con il nome di Mocha, successivamente di LiveScript e solo in seguito rinominato Javascript Nel 1995 Sun Microsystem introdusse le Applet Java che permettevano all’utente di interagire, sempre lato client. Microsoft che disponeva di un browser molto limitato, produsse JScript che ebbe però poco successo
  • 7. Vantaggi e Svantaggi Il linguaggio di scripting, rispetto al linguaggio di programmazione, presenta: Vantaggi: Sicurezza: non può accedere a informazioni riservate Visibilità: codice in chiaro ed in continua evoluzione Lato Client: non carica il server Svantaggi: Limitate capacità: deve delegare i linguaggi di programmazione per effettuare altre operazioni Download totale: deve essere scaricato tutto il codice per interpretarlo Lato Client: può caricare eccessivamente il client
  • 8. Caratteristiche Javascript presenta diverse caratteristiche: E’ un linguaggio di scripting Consente di effettuare alcune operazioni ma non di gestire completamente tutte le funzionalità messe a disposizione dal Sistema Operativo E’ basato sugli oggetti Gli oggetti vengono utilizzati per la programmazione ma non è possibile sfruttare polimorfismo, ereditarietà, tipizzazione E’ guidato dagli eventi Gli eventi consentono di eseguire delle azioni E’ indipendente dalla piattaforma Tutti i browser che supportano la specifica sanno eseguire lo script, indipendentemente dal Sistema Operativo residente E’ standardizzato La ECMA ha standardizzato Javascript nel 1997 con il nome ECMAScript ed inoltre è uno standard ISO
  • 9. Versioni e limiti Nel 1996 Netscape sottopose JavaScript al processo di standardizzazione da parte dell’ECMA Nel giugno 1997 fu adottata la versione 1.1 e fu definita ECMAScript o ECMA-262 Le versioni devono essere recepite nei browser per essere adottate. Solo la versione javascript 1.1 è stata recepita da tutti i browser. Solo la parte CORE fa parte dello standard, quindi solo le istruzioni di base del linguaggio (non l’oggetto windows ! )
  • 10. Motori Javascript Javascript è un linguaggio interpretato che necessita di un “motore” di esecuzione che esegua il codice sorgente. I browser incorporano un motore javascript che ha recepito la specifica dell’ECMA L’engine solitamente è sviluppato in C e prevede la compilazione JIT: Opera 10: utilizza Carakan, prima (v.9) Linear B, ancor prima (v.8 e v.7) Futhark Internet Explorer 9 : utilizza Chakra, prima (v.8) JScript Mozilla Firefox 3.5 utilizza TraceMonkey, prima (v.3) SpiderMonkey Google Chrome utilizza V8
  • 11. Primi script Il browser riconosce i codice Javascript in quanto viene utilizzato il tag HTML <script> …codice javascript … </script> Se il browser non supporta lo script allora visualizzerà il codice senza interpretarlo Per evitare questo problema il codice deve essere commentato <script> <!--…codice javascript… --> </script> Se il browser non supporta lo script allora eseguirà il tag <noscript> che informerà l’utente dei limiti del suo browser. <noscript> Il browser non supporta Javascript </noscript>
  • 12. Primi script Per essere sicuri che lo script venga eseguito utilizzando il motore javascript presente nel browser, verrà specificato il linguaggio utilizzato: <script language=“Javascript1.1”><!-- ... --> </script> Javascript può essere impiegato in una pagina HTML in 4 modi: 1. Utilizzando il tag <script> ed inserendo nell’elemento il codice 2. Utilizzando il tag <script> ed importando una pagina javascript esterna 3. Utilizzando la parola chiave “javascript:” prima della sua invocazione. 4. Utilizzando l’attivazione di un evento: onmouseover ecc
  • 13. Primi script File MiaProva.html <html> <head> <title>MiaProva</title> <SCRIPT LANGUAGE="JavaScript"> <!-- 1) codice function prova() { alert("Ciao Mondo!"); } //--> </SCRIPT> 2) import <SCRIPT LANGUAGE="JavaScript" src="mio.js"></SCRIPT> </head> <BODY> 3) key <A HREF="javascript:alert('Hello')">Hello World!</A> javascript <A HREF=“#” onclick=“prova()">Ciao Mondo!</A> </BODY> </html> 4) evento File mio.js alert( “Hello World!");
  • 14.
  • 15. Livelli La specifica ECMAScript ha standardizzato le istruzioni che rappresentano il CORE di Javascript, ossia le istruzioni tipiche di un linguaggio di programmazione (tipi, array, iterazioni, condizioni) ma NON la gestione della pagina ad opera del Browser poiché non è disciplinata ed è stata gestita dai vendor che hanno creato degli oggetti ad-hoc determinando l’insorgere del BOM. Il BOM (Browser Object Model) è quella parte di Javascript che consente l’interazione con il browser tramite l’oggetto “window”. Non è previsto nessuno standard pertanto segue solo le scelte che sono state effettuate dai vendor (Microsoft, Netscape). Tali aspetti sono stati presi in carico dal W3C per determinare uno standard ed è stato creato il DOM. Il DOM (Document Object Model) è quella parte di Javascript standardizzata dal W3C che prevede di gestire il documento HTML come XML e di navigarlo e modificarlo in modo più efficiente rispetto al BOM.
  • 16.
  • 17.
  • 18. La sintassi In ogni linguaggio occorre definire : Il soggetto: colui che esegui l’azione Il verbo: l’azione che sarà effettuata Nei linguaggi di programmazione questo viene tradotto in Dati: rappresentano i valori che sono oggetto della nostra elaborazione. Istruzioni: rappresentano l’elaborazione, l’algoritmo che dovrà essere applicato ai dati .
  • 19. La sintassi Dati: rappresentano i valori che sono oggetto della nostra elaborazione. Ogni dato viene identificato da un tipo che identifica la tipologia di valori Un nome che serve per identificare univocamente il nostro dato Un valore che indica il valore che abbiamo scelto di conservare A seconda che il loro valore sia modificabile o meno abbiamo variabili e costanti Istruzioni: rappresentano l’elaborazione, l’algoritmo che dovrà essere applicato ai dati . Possono distinguersi in istruzioni: elementari: che vengono messi a disposizione dal linguaggio utilizzato (operatori) complesse: sono blocchi di istruzioni che si ha necessità di utilizzare più volte
  • 20. La sintassi Nome: Non possono utilizzare dei nomi riservati dal linguaggio Non è possibile utilizzare spazi all’interno del nome Assegnazione Utilizziamo l’operatore = per indicare che un valore deve essere conservato (assegnato ) ad un nome Tipi di valori in Javascript: Intero: rappresenta l’insieme dei numeri interi Decimali: rappresenta l’insieme di numeri reali Logico: è un insieme contenente valori vero o falso Stringa: rappresenta un insieme costituito di caratteri Undefined: rappresenta l’assenza di valore null: rappresenta un valore volutamente vuoto
  • 21. La sintassi La visibilità delle variabili varia a seconda del blocco di codice in cui viene dichiarata: { //non vedo la variabile pippo { var pippo=1; vedo la variabile pippo {//vedo la variabile pippo } {//non vedo la variabile pippo } //non vedo la variabile pippo } La variabile pippo è visibile solo dal blocco che definisce la variabile ed in quelli contenuti in esso.
  • 22. La sintassi Le istruzioni elementari si classificano in: Unari : richiedono un dato in ingresso (++, --, -) indice++ Binari : richiedono due dati in ingresso (=, +, -, *, /, %) var indice = 0; Ternari : richiedono tre dati in ingresso (? : ) var scelta = (indice==0) ? true : false; Booleani: restituiscono un valore booleano (==, !=, <, <=, >, >=) if ( scelta == true ) alert(‘vero!’) Logici: richiedono e restituiscono valori booleani (&&, ||, !) if ( scelta == true && indice == 0) alert(‘vero!’)
  • 23.
  • 24. Strutture di controllo Le funzioni: consentono di modulare un blocco di codice e poterlo riutilizzare più volte. function nome_funzione (parametri di ingresso) { //blocco di codice return valore_restituito; } Esempio: function moltiplicazione (a, b) { c =a*b; return c; }
  • 25. Strutture di controllo Javascript non è un linguaggio tipizzato e così come non è necessario dichiarare il tipo di dato ( intero, stringa, booleano ) non è necessario dichiarare il tipo di ritorno di una funzione. Pertanto le funzioni possono tornare diversi tipi di dato o non tornarlo affatto: function moltiplicazione (a, b, op) { If (op==‘molt’) return (a*b); else if (op==‘add’) return (“la somma è “ + a+b); } function(5,6,’molt’) function(5,6,add’) function(5,6,’err’)
  • 26. Strutture di controllo Istruzioni condizionali: consentono di prendere delle decisioni in base ai dati inseriti if(condizione) { //blocco istruzione } else { //blocco istruzione } Per esempio: a=window.prompt(“primo valore”,0); b=window.prompt(“primo valore”,0); if (a<b) document.write(a + “ è minore di “+ b); else document.write(a + “ è maggiore di “+ b);
  • 27. Strutture di controllo Istruzioni di selezione: permette di verificare i possibili valori dell'espressione presa in considerazione Sintassi: Esempio: switch (espressione) { var a = 1; case val1: switch (a) { case 0: istruzioni1; break alert("a = zero");break; ... case 1: case val_n: alert("a = uno");break; istruzioni_n; break case 2: default: alert("a = due");break; case 3: istruzioni alert("a = tre");break; } default: alert("a maggiore di 3"); }
  • 28. Strutture di controllo Istruzioni di loop : consentono di reiterare un blocco di istruzioni fino a quando una condizione risulti vera: while(condizione) { //blocco di codice } Esempio: condizione = true; while(condizione) { a=window.prompt("Indovina il numero", a); if (a==5) document.write("esatto"); condizione =false; }
  • 29. Strutture di controllo Istruzioni for: consentono di reiterare un blocco di istruzioni un numero finito di volte for(definizione di variabile, condizione, incremento) { //blocco di codice } Esempio: for(var i=0;i<10;i++) { a=window.prompt(“Inserisci il numero", 0); document.write(“numero “ + (a+1) + “=“ + i); condizione =false; }
  • 30.
  • 31. Gli oggetti Javascript è un linguaggio basato ad oggetti, questo significa che è possibile creare o utilizzare degli oggetti esistenti per svolgere alcune funzionalità. Ogni oggetto è costituito da proprietà che rappresentano dei valori associati ad un oggetto Ogni oggetto è costituito da metodi che forniscono il comportamento del nostro oggetto
  • 32.
  • 33. Gli oggetti Javascript è un linguaggio non tipizzato che non consente di create dei tipi ma è possibile creare degli oggetti La libreria Core mette a disposizione degli oggetti che consentono allo sviluppatore di facilitare l’attività di sviluppo. Tali oggetto sono: Array Boolean Date Math Number String
  • 34. Gli Array L’oggetto Array consente di creare un array e di gestirlo tramite i propri metodi Un array è una lista di valori che possono essere referenziati con un nome ed un indice 1) Definizione di array nome = new Array(‘prova1’, ‘prova2’); 2) Definizione di array nome = new Array(2); nome[0]= ‘nome1’ nome[1]= ‘nome2’
  • 35. Array mono-dimensionali Per definire un array e' possibile usare una di queste sintassi: Creare un oggetto Array vuoto nome_variabile = new Array( ); myArray = new Array(); Creare un oggetto Array vuoto di 3 elementi nome_variabile = new Array( dimensione_array ); myArray = new Array(3); Creare un oggetto Array vuoto di N elementi valorizzati nome_variabile = new Array( valore1, valore2, valore3 ); myArray = new Array('pippo', 'pluto', 'paperino');
  • 36. Array mono-dimensionali Per popolare o riassegnare dei valori alll'array creato precedentemente occorre usare questa sintassi: nome_variabile[ indice_array] = valore; Per assegnare il valore "pippo" alla variabile myArray con indice 0 (indice di partenza dell'array) myArray[0] = "pippo";
  • 37. Array bi-dimensionali E' possibile creare un array bi-dimensionale assegnando ad un elemento dell'array un nuovo array, usando questa sintassi: myArray = new Array(); myArray[0] = new Array() oppure in questo altro modo, che consente di creare un oggetto Array nidificato myArray = new Array( new Array() );
  • 38. Array bi-dimensionali Per popolare o riassegnare dei valori all'array bi-dimensionale creato precedentemente occorre indicare questa sintassi: nome_variabile[ indice_array ] [ indice_array ] = valore; Questa istruzione serve per assegnare il valore "pippo" alla variabile myArray con indice [0][0] myArray[0][0] = "pippo"; Sarebbe stato possibile assegnare il valore in sede di creazione, in questo modo: myArray = new Array( new Array("pippo") );
  • 39. Array bi-dimensionali - rettangolari Sono quegli array che hanno uguale dimensione orizzontate, esempio: myArray = new Array(); myArray[0] = new Array(2) myArray[0][0] = 'prova1' myArray[0][1] = 'prova2' myArray[1] = new Array(2) myArray[1][0] = 'prova3' myArray[1][1] = 'prova4'
  • 40. Array bi-dimensionali – non rettangolari Sono quegli array che NON hanno uguale dimensione orizzontate, esempio: myArray = new Array(); myArray[0] = new Array(2) myArray[0][0] = 'prova1' myArray[0][1] = 'prova2' myArray[1] = new Array(3) myArray[1][0] = 'prova3' myArray[1][1] = 'prova4' myArray[1][2] = 'prova5'
  • 41. Iterare su Array E' possibile iterare su un array mono-dimensionale usando il ciclo "for", myArray = new Array("prova1 ", "prova2"); for(i = 0; i < myArray.length; i++){ document.write( myArray [i] ); } in questo caso verrà stampata la stringa: prova1 prova2
  • 42. Iterare su Array E' possibile iterare su un array bi-dimensionale usando il ciclo "for", myArray = new Array(new Array('prova1 ','prova2 '), new Array ('prova3 ','prova4 ') ); for(i = 0; i < myArray.length; i++){ for(y = 0; y < myArray[i].length; y++){ document.write( myArray[i][y] ); } } in questo caso verrà stampata la stringa: prova1 prova2 prova3 prova4
  • 43. Array dinamici E' possibile: 1. creare array di dimensione variabile in base alla dimensione di precedenti array, 2. assegnare un array ad una nuova variabile 1. Creazione un Array dal nome myArray2 di dimensione corrispondente a myArray MA VUOTO myArray = new Array('prova1 ','prova2 ','prova3 '); myArray2 = new Array( myArray.length ); 2. Assegnazione alla variabile myArray3 dello stesso puntatore della variabile myArray, quindi con lo stesso contenuto ('prova1 ','prova2 ','prova3 ') myArray3 = myArray;
  • 44. Gli Array I metodi dell’oggetto Array sono concat unisce 2 array e ritorna un nuovo array join collega tutti gli elementi di un array in una stringa pop rimuove l’ultimo elemento dall’array e lo ritorna push aggiunge un elemento all’array e lo ritorna. reverse inverte l’ordine degli elementi dall’array shift rimuove il primo elemento dall’array e lo ritorna. slice estrae una sezione dell’array e lo ritorna splice aggiunge o rimuove elementi all’array sort ordina gli elementi dell’array unshift aggiunge un elemento all’array e ritorna la lunghezza
  • 45. Boolean e Date Boolean Definisce un tipo boleano che può catturare valori true/false booleanObjectName = new Boolean( true ); Se il valore è omesso allora avrà valore false Date Permette di creare un oggetto di tipo Data che, come Java, decorre dal 1/1/1970 ed è espresso in milli secondi. Presenta solo metodi e non proprietà var time = new Date() var hour = time.getHours() var minute = time.getMinutes() var second = time.getSeconds() var temp = "" + ((hour > 12) ? hour - 12 : hour) temp += ((minute < 10) ? ":0" : ":") + minute temp += ((second < 10) ? ":0" : ":") + second temp += (hour >= 12) ? " P.M." : " A.M." alert(temp)
  • 46. Math Math Questo oggetto consente di poter invocare tutti quei metodi che possono essere utilizzati per effettuare calcoli matematici abs valore assoluto sin, cos, tan funzioni trigonometriche standard acos, asin, atan funzioni trigonometriche inverse exp, log esponente e logaritmo naturale ceil numero intero massimo floor numero intero minimo min, max inferiore o maggiore pow esponenziale round arrotondamento all'intero + vicino sqrt radice quadrata
  • 47. Number e String Number Viene utilizzato per rappresentare dei numeri e poter li manipolare facilmente: MAX_VALUE rappresenta il numero + grande MIN_VALUE rappresenta il numero + piccolo NaN Special “not a number” value NEGATIVE_INFINITY valure infinito negativo POSITIVE_INFINITY valore infinito String Consente di creare degli oggetti stringa e di manipolarli tramite un insieme di metodi a = new String(“prova”); length ritorna la lunghezza della stringa toUpperCase/toLowerCase trasforma in maiuscolo/minuscolo i caratteri substring(start, end) seleziona una parte di stringa dal punto start ad end
  • 48. String String anchor crea una ancora HTML big, blink, bold, fixed, italics, crea corrispondenti tag HTML small, strike, sub, sup String formattate in HTML charAt, charCodeAt ritorna il carattere in data posizione indexOf, lastIndexOf ritorna la posizione di un carattere link crea un HTML hyperlink concat concatena 2 stringhe split divide una stringa in un array di stringhe slice estrae una sezione di stringa match, replace, search usato con le espressioni regolari
  • 49.
  • 50. Gli oggetti E’ consentito, per lo sviluppatore, creare dei proprio oggetti da poter riutilizzare come un libreria oppure da potere mettere a disposizione della comunità degli sviluppatori La definizione di un oggetto può essere effettuata in 3 modi distinti: 1. Utilizzando l’oggetto Object() ed aggiungere proprietà e metodi ad esso. 2. Definendo un oggetto letterale che contenga tutte le proprietà e metodi 3. Definendo una funzione che usi la logica degli oggetti ( tramite la parola chiave this, ecc)
  • 51. 1) new Object() var Anagrafica = new Object(); Anagrafica.Anagrafica = function(Nome, Giorno, Mese, Anno) { this.Nome = Nome; this.Giorno = Giorno; this.Mese = Mese; this.Anno = Anno; }; Anagrafica.stampaOggetto = function() { document.write ("Dati in archivio:"); document.write ("<BR>Nome: "+this.Nome); document.write ("<BR>Giorno: "+this.Giorno); document.write ("<BR>Mese: "+this.Mese); document.write ("<BR>Anno: "+this.Anno); }; Anagrafica.Anagrafica("Antonio", 11, "Novembre", 1968); Anagrafica.stampaOggetto();
  • 52. 2) Oggetti letterali var Anagrafica = { Anagrafica: function(Nome, Giorno, Mese, Anno) { this.Nome = Nome; this.Giorno = Giorno; this.Mese = Mese; this.Anno = Anno; }, StampaOggetto: function() { document.write ("Dati in archivio:"); document.write ("<BR>Nome: "+this.Nome); document.write ("<BR>Giorno: "+this.Giorno); document.write ("<BR>Mese: "+this.Mese); document.write ("<BR>Anno: "+this.Anno); } } Anagrafica.Anagrafica("Antonio", 11, "Novembre", 1968); Anagrafica.StampaOggetto();
  • 53. 3) Funzioni di oggetti function StampaOggetto () { document.write ("Dati in archivio:"); document.write ("<BR>Nome: "+this.Nome); document.write ("<BR>Giorno: "+this.Giorno); document.write ("<BR>Mese: "+this.Mese); document.write ("<BR>Anno: "+this.Anno); } function Anagrafica (Nome, Giorno, Mese, Anno) { this.Nome = Nome; this.Giorno = Giorno; this.Mese = Mese; this.Anno = Anno; this.Visualizza = StampaOggetto; } var Antonio = new Anagrafica ("Antonio", 11, "Novembre", 1968); Antonio.Visualizza();
  • 54.
  • 55. Il BOM Javascript prevede 3 tipologie di oggetti: Ereditati dalle librerie CORE Creati dallo sviluppatore Creati dal Browser ( BOM ) Questa terza tipologia di oggetti è costituita da tutti quegli oggetti che vengono creati dal browser per memorizzare il documenti HTML e tutte le informazioni relative al browser, allo schermo e necessarie per il corretto funzionamento Lo sviluppatore può interagire con questi oggetti ma, nel caso di oggetti BOM che non sono oggetto di specifica, occorre gestire le differenze esistenti tra i browser, il modo in cui tali oggetti vengono creati ed i metodi che mettono a disposizione.
  • 56. Gli oggetti BOM Quando programmate con JavaScript dovete immaginare che la pagina del browser sia formata da vari oggetti in relazione fra loro: prima di tutto c'è il browser stesso (l'oggetto window.navigator) poi la finestra che contiene il tutto (l'oggetto window) eventuali frames (l'oggetto window.frames) il documento HTML vero e proprio (window.document) i moduli per raccogliere l'input dell'utente (document.forms ["nomeForm"]) le immagini (document.images["nomeImmagine"]) i cookie (document.cookie["nomeCookie"]) le applet (document.applets["nomeApplet"]) la barra degli indirizzi (window.location) I siti visitati del browser (window.history) Le informazioni del monitor dell’utente (window.screen)
  • 57. L’oggetto navigator L’oggetto navigator serve per ottenere delle informazioni sul browser e sulla configurazione del sistema: Navigator Object Collections plugins[] informazioni dei plugins istallati Navigator Object Properties appCodeName Nome in codice del browser appMinorVersion Minor version del browser appName Nome del browser appVersion Piattaforma e versione del browser browserLanguage Lingua del browser cookieEnabled Abilitazione o meno dei cookies cpuClass Classe di CPU onLine Navigazione offline o online
  • 58. L’oggetto navigator platform Sistema operativo systemLanguage Lingua del sistema operativo userAgent user-agent utilizzato userLanguage lingua di default Navigator Object Methods javaEnabled() Java abilitato
  • 59. L’oggetto window L’oggetto window è l'oggetto di massimo livello nella gerarchia dei clienti di Javascript. Un oggetto window può rappresentare sia una finestra di livello top o un frame all'interno di un frameset.
  • 60. L’oggetto window Frames e finestre frames Un raggruppamento (array) che riflette tutti i frame della finestra. length Il numero dei frames nella finestra. parent Un sinonimo per indicare una finestra o un frame il cui frameset contiene il frame corrente. self Un sinonimo per indicare la finestra corrente. window Un sinonimo per indicare la finestra corrente. top Un sinonimo per indicare la finestra più in alto nel browser. opener Specifica il nome della finestra di un certo documento quando una finestra viene aperta usando il metodo "open". name Un nome unico usato per riferirsi a questa finestra.
  • 61. L’oggetto window Messaggi utente alert Mostra una casella-dialogo di Allarme (Alert Box), con un messaggio e un bottone "OK". confirm Mostra una casella-dialogo di Conferma (Confirm Box), con uno specifico messaggio e i bottoni "OK" e "Annulla". prompt Mostra una casella-dialogo di Informazione (Prompt Box) con un messaggio e una zona di inserimento dati. status defaultStatus messaggio di default mostrato sulla barra di status della finestra. status Specifica una priorità o un messaggio transitorio nella barra di status della finestra.
  • 62. L’oggetto window Barre statusbar Rappresenta la barra di status della finestra del browser. personalbar Rappresenta la barra personale della finestra del browser (altrimenti chiamata barra delle directory). scrollbars Rappresenta le barre di scorrimento della finestra del browser. toolbar Rappresenta la barra degli strumenti della finestra del browser. locationbar Rappresenta la barra di locazione della finestra del browser. menubar Rappresenta la barra di menù della finestra del browser.
  • 63. L’oggetto window Timeout ed intervalli clearTimeout Cancella una scadenza di tempo che era stata inserita con il metodo setTimeout. setTimeout Valuta un'espressione o richiama una funzione allo scadere di una definita quantità di millisecondi. clearInterval Cancella una scadenza di tempo che era stata inserita con il metodo setInterval . setInterval Valuta un'espressione o chiama una funzione ogni volta che una certa quantità di millisecondi è scaduta.
  • 64. L’oggetto window Gestione finestre open Apre una nuova finestra del web browser. close Chiude la finestra indicata. closed Specifica se una finestra è stata chiusa. stop Interrompe lo scaricamento corrente. Varie print Stampa i contenuti della finestra o del frame. blur Elimina il fuoco dall'oggetto specificato. focus Mette a fuoco l'oggetto specificato. find Trova una specifica stringa di testo nei contenuti di una specifica finestra home Dirige il browser sull'URL indicato nelle preferenze come home page dell'utente.
  • 65. L’oggetto window Eventi sulle finestre onDragDrop L'utente rilascia un oggetto, per esempio un file, sulla finestra del browser. onLoad Il browser finisce di caricare una finestra o tutti i frames all'interno di un tag FRAMESET. onMove L'utente (o il programma) sposta una finestra o un frame. onResize L'utente (o il programma) cambia le dimensioni di una finestra o di un frame onUnload L'utente fa il refresh di una finestra onBlur Un elemento di forma va fuori fuoco o quando una finestra o un frame vanno fuori fuoco. onError L'atto di scaricare un documento o un'immagine provoca un errore. onFocus Una finestra, frame o frameset riceve fuoco o quando un elemento di forma riceve un input "fuoco“.
  • 66. L’oggetto window Gestori eventi captureEvents Permette alla finestra o al documento di catturare tutti gli eventi del tipo indicato. disableExternalCapture Disconnette la cattura di eventi esterni installata col metodo enableExternalCapture. enableExternalCapture Permette a una finestra con frames di catturare eventi in pagine caricate da locazioni diverse (servers). handleEvent Richiama lo strumento che manipola un evento (event handler) specificato. releaseEvents Mette al finestra in condizione di rilasciare eventi del tipo specificato, mandando l'evento agli oggetti più avanti nella gerarchia degli eventi. routeEvent Fa passare un evento catturato attraverso la normale gerarchia degli eventi.
  • 67. L’oggetto document L’oggetto document permette di ottenere un riferimento al documento HTML ed agli elementi definiti in esso L'oggetto espone solo pochi metodi: open(): apre un flusso di informazione close() chiude un flusso di informazioni write() e writeln() scrivono nella pagina formattata in HTML una stringa passata come parametro. Le proprietà disponibili sono relative: 1. Agli attributi del tag <body> fgColor e bgColor si riferiscono agli attributi text e background per indicare il colore di primo piano e di sfondo della pagina 2. Alle proprietà del documento HTML title: titolo del documento HTML 3. Al contenuto del documento HTML ( segue … )
  • 68. L’oggetto document Tutti gli elementi presentano proprietà: name: ricava il nome del campo value: imposta o ricava il valore del campo type: specifica il tipo di campo metodi: focus() e blur(): per ottenere o rilasciare il focus A seconda del tipo di elemento HTML cui ci si riferisce, è possibile gestire diverse proprietà in modo da ottenere informazioni sull’elemento in questione, per esempio: Caselle di testo <input type=text> (size, maxLength, select(), onchange) Aree di testo <textarea> (rows e cols ) Pulsanti di opzione <input type=checkbox> (checked ) Liste <select> <option> (options, selectedIndex, text , index )
  • 69. L’oggetto document Esempio di oggetto document <SCRIPT LANGUAGE="JavaScript"> function visualizza() { alert(document.statform.userName.value) } </SCRIPT> <FORM NAME="statform"> <INPUT TYPE = "text" name = "userName" size = 20 onchange="visualizza()"> </FORM>
  • 70. L’oggetto location Tale oggetto consente di ottenere informazioni sull’URL della pagina corrente tramite le proprietà: port href hash http://www.google.com:80/search?q=java#miotag protocol pathname hostname search
  • 71. L’oggetto location L’oggetto location contiene 2 metodi: replace(): ordina al browser di sostituire la pagina attuale con la pagina dell’URL specificata reload(): ricarica la pagina dal server
  • 72. L’oggetto history L’oggetto history da accesso limitato ai siti visitati dal browser. Per motivi di sicurezza è possibile sapere solo la lunghezza della history dell’utente. I metodi disponibili sono tre: go(): indica di quante pagine si vuole andare avanti o indietro back(): emula il pulsante indietro del browser di una posizione forward(): emula il pulsante avanti del browser di una posizione
  • 73. L’oggetto screen L’oggetto screen consente di avere informazioni sulla dimensione dello schermo dell’utente in base alla configurazione attuale e potenziale, in modo da poter dimensionare in modo ottimale la dimensione del browser. Utilizzando le proprietà di questo oggetto è possibile ottenere delle informazioni utente ed utilizzando i metodi dell’oggetto window sarà possibile modificare il dimensionamento del browser
  • 74. L’oggetto screen Proprietà scroll Fa scorrere una finestra secondo una coordinata specificata. innerHeight Specifica la dimensione verticale, in pixel, dell'area di contenuto della finestra. innerWidth Specifica la dimensione orizzontale, in pixel, dell'area di contenuto della finestra. outerHeight Specifica la dimensione verticale, in pixel, del margine esterno della finestra. outerWidth Specifica la dimensione orizzontale, in pixel, del margine esterno della finestra. pageXOffset Fornisce la posizione x corrente, in pixel, di una pagina mostrata della finestra. pageYOffset Fornisce la posizione y corrente, in pixel, di una pagina mostrata della finestra.
  • 75. L’oggetto screen Metodi di windows da utilizzare moveBy() Muove la finestra secondo quantità specificate. moveTo () Muove l'angolo in alto a sinistra della finestra secondo le specificate coordinate dello schermo. resizeBy () Dà nuove dimensioni a un'intera finestra muovendo l'angolo in basso a destra secondo una quantità indicata. resizeTo() Dà nuove dimensioni a un'intera finestra secondo le indicate dimensioni esterne di altezza e larghezza. scrollBy() Fa scorrere l'area di visualizzazione di una finestra secondo quantità definite. scrollTo() Fa scorrere l'area di visualizzazione della finestra secondo coordinate definite, in modo che il punto indicato diventi l'angolo superiore sinistro.
  • 76.
  • 77. I Cookies I Cookies consentono di conservare nel browser dell’utente delle informazioni che possono essere utilizzate nel momento in cui l’utente accede nuovamente al sito. Ogni dominio può salvare nel browser dell’utente massimo 20 cookies Si tratta di file di testo che contengono delle informazioni, quali: Nome Data di scadenza Dominio Percorso
  • 78. I Cookies function setCookie(NameOfCookie, value, expiredays) { var ExpireDate = new Date (); ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000)); document.cookie = NameOfCookie + "=" + escape(value) + ((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString()); } function delCookie (NameOfCookie) { if (getCookie(NameOfCookie)) { document.cookie = NameOfCookie + "=" + "; expires=Thu, 01-Jan-70 00: 00:01 GMT"; } }
  • 79. I Cookies function getCookie(NameOfCookie){ if (document.cookie.length > 0) { begin = document.cookie.indexOf(NameOfCookie+"="); if (begin != -1) { begin += NameOfCookie.length+1; end = document.cookie.indexOf(";", begin); if (end == -1) end = document.cookie.length; return unescape(document.cookie.substring(begin, end)); } } return null; }
  • 80.
  • 81. Gli eventi In seguito alle azioni che decide di effettuare l’utente, vengono a crearsi degli eventi che devono essere gestiti La gestione di un evento indica la necessità di richiamare delle funzioni pertanto abbiamo la presenza di handler ossia “gestori degli eventi” che hanno il compito di richiamare la funzione appropriata per quell’evento <a href=“pagina.html” onclick=”alert(‘ciao’)”>link</a> Nell’esempio precedente: onclick: è il gestore degli eventi alert(‘ciao’): è l’attività associata al verificarsi dell’evento che verrà avviata dal gestore
  • 82. Gli eventi Nel corso del tempo il numero degli eventi è progressivamente aumentato Possiamo distinguerli in 5 categorie: Eventi di sistema : onLoad, onUnload, onAbort, onError Eventi legati al mouse: onClick, onMouseOver, onMouseOut Eventi attivabili alle modifiche dell’utente: onChange Eventi legati al fuoco: onFocus, onBlur, onSelect Eventi legati a particolari bottoni: onSubmit, onReset
  • 83. Gli eventi Eventi di sistema : onLoad: si attiva quando la pagina html viene caricata onUnload: si attiva quando la pagina html viene abbandonata (pressione di un link, chiusura finestra) onAbort: si attiva quando l’utente preme il tasto stop e ESC onError: si attiva quando si verifica un errore durante il caricamento di un oggetto Eventi legati al mouse: onClick: si attiva quando l’utente clicca su un oggetto onMouseOver: si attiva quando l’utente passa il mouse su un oggetto onMouseOut:: si attiva quando l’utente passa il mouse lontano dall’oggetto
  • 84. Gli eventi Eventi attivabili alle modifiche dell’utente: onChange: si attiva quando l’utente effettua delle modifiche ad un oggetto testo, area di testo, password Eventi legati al fuoco: onFocus: si attiva quando l’utente attiva un determinato oggetto onBlur: si attiva quando l’utente non utilizza un determinato oggetto onSelect: si attiva quando l’utente seleziona delle caselle di testo Eventi legati a particolari bottoni: onSubmit: quando l’utente effettua l’invio di una form onReset: quando l’utente clicca sul tasto “annulla” di una form
  • 85.
  • 86. Il DOM Il DOM (Document Object Model) è il frutto di una specifica del W3C per consentire di navigare il documento HTML come una struttura XML ed accedere a tutti i suoi elementi Ancor oggi si continua ad utilizzare il BOM in quanto è più intuitivo e per problemi di compatibilità Il DOM presenta un documento HTML come una struttura ad albero composta da elementi attributi e testo Il DOM definisce una modalità standard per accedere e manipolare documenti HTML
  • 88. Il DOM Per ogni elemento di un albero DOM è possibile accedere, modificarlo, cancellarlo e ricrearlo Il primo elemento si chiama root e non ha padre Gli elementi senza figli si chiamano leaf (foglia) Gli elementi che possiedono lo stesso padre si chiamano siblings (fratelli)
  • 89. Il DOM Proprietà DOM x.innerHTML - il codice html dell'elemento x x.nodeName - il nome di x x.nodeValue - il valore di x x.parentNode - il nodo padre di x x.childNodes - il nodo figlio di x x.nextSibling – il successivo nodo fratello di x x.previousSibling – il successivo nodo fratello di x x.attributes - gli attributi di x Metodi DOM x.getElementById(id) - recupera il nodo in base al nome x.getElementsByTagName(name) - recupera tutti i nodi in base al nome x.appendChild(node) - inserisce un nodo figlio ad x x.removeChild(node) - rimuove un nodo figlio a x
  • 90. Il DOM <html> <body><p align="center" id="ciccio"><b>prova</b></p></body> <script language="javascript"> alert(document.getElementById("ciccio").parentNode.nodeName ); alert(document.getElementById("ciccio").nodeName) alert(document.getElementById("ciccio").attributes[0].nodeName); alert(document.getElementById("ciccio").attributes[0].nodeValue); alert(document.getElementById("ciccio").innerHTML) alert(document.getElementById("ciccio").childNodes[0].nodeName); </script> </html>