Writing HTML | Riguardo A | FAQ | Riferimenti | Tag | Lezioni | indietro | avanti |

27b. JavaScript- Contenuto Dinamico

Aumentiamo il nostro Dosaggio...

Scriviamo contenuti dinamici per una pagina...

Diversi messaggi per condizioni diverse...

Obiettivi

Dopo questa lezione sarai in grado di:

Lezione

Nota: Se non hai i documenti di lavoro dalla lezione precedente scaricane una copia ora.

Ti abbiamo ricordato in precedenza come ogni documento HTML, nel momento in cui viene caricato, sia interpretato mentre il browser legge in piu' dati. Per il codice HTML, questo significa che appena il browser ottiene abbastanza informazioni per visualizzare qualche cosa, questo cerca di farlo, anche se al contempo sta leggendo cio' che resta del documento.

Quando ci riferiamo ad un contenuto dinamico che e' possibile scrivere in JavaScript, significa che il web browser con questo puo' fare piu' del semplice "leggi e visualizza", "leggi e visualizza"... nel momento in cui esso legge nel codice JavaScript contenuto nel tuo HTML, il browser puo' prendere decisioni basate sulla modalita' con cui il codice e' organizzato, verificare alcune funzioni incluse, e quindi scrivere codici HTML diversi secondo le istruzioni con cui e' stato programmato. Esso puo' essere programmato anche per fare qualcosa di diverso secondo una logica casuale ogni volta che la pagina viene caricata.

Questo rende le tue web page un po' piu' intelligenti che semplicemente formattate!

Possiamo usare JavaScript per scrivere ogni altro tipo di contenuto HTML usando il formato:

  document.write('xxxxxxxx xxxxxxxxxx');
  document.write('xxxx xxxxxxx xxxxxxx xxxxx');
  document.write('xx xx xxxxxxxxxxxx xx');
Ogni linea di questo codice scrive un pezzetto di HTML, che e' tutto all'interno dei caratteri di apice singolo. Questa serie di JavaScript statement
  document.write('<h1>Grande Mondo di Formaggio</h1>')
  document.write('<b><i>Nessuno a questo mondo ama il formaggio');
  document.write('!<i>quanto me</b><br> -- Colby Jack (1903)');
produrra' lo stesso risultato a schermo di questo set di codice HTML:
  <h1>Grande Mondo di Formaggio</h1> 
  <b><i>Nessuno a questo mondo ama il formaggio 
quanto me!<i></b><br> -- Colby Jack (1903)
Ora, se JavaScript si riducesse a cose di questo tipo, non staremmo certo cercando di insegnartelo! JavaScript fornisce altri tipi di informazioni che si possono visualizzare e che non sarebbero altrimenti disponibili con il solo HTML. Ci sono funzioni incluse che possono fornire la data e l'ora correnti, informazioni sul programma internet usato dall'utente ed altro, come vedremo presto. Ma ancora piu' di questo, possiamo costruire strutture logiche di verifica, in modo da poter fare cose tipo:
Se oggi e' Martedi' oppure Mercoledi' e l'ora e' posteriore alle 12:00 PM, allora visualizza questo messaggio di saluto personalizzato per il mattino; ma se l'ora e' precedente alle 12:00 PM, allora visualizza quest'altro messaggio per il pomeriggio. Ma se e' Venerdi', una qualsiasi ora, devi mostrare un diverso tipo di messaggio, non importa quale ora della giornata sia. Durante le altre giornate e gli altri orari, visualizza solo un messaggio standard di "Buona Giornata".
Il codice JavaScript ci da' la flessibilita' necessaria per la creazione di contenuti dinamici che si possono comportare ed apparire diversamente in base al visitatore.

La prima cosa che faremo sara' quella di scrivere una serie di JavaScript statement che creeranno i footer per tutti i nostri documenti-- ma non come quelli che abbiamo scritto fino ad adesso, a mano; questo stesso blocco di HTML/JavaScript puo' essere tagliato & incollato in ogni documento ed altrettanto dinamicamente stampera' a video (con esempi per questa pagina mostrati tra parentesi):

Non tutti i web server forniscono date di modifica documenti accurate, elemento (c), e tipicamente, mentre si testano documenti sul desktop del proprio computer non si e' in grado di ottenere questa informazione ed esso stampa a video una qualche data sbagliata, del tipo Gennaio 1900. Ti mostreremo come verificare queste condizioni. L'elemento (d) e' estremamente utile in quanto se si ha bisogno di spostare le nostre web page ad un web server diverso o di riarrangiare il nostro site, l'URL sara' aggiornato automaticamente.

Il modello per il nostro footer "standard" per il progetto Volcano Web assomiglia al codice che segue. Lo presenteremo prima sezione per sezione con alcune spiegazioni. Non e' ul elemento critico che tu capisca esattamente come il tutto funzioni, dato che quando sara' il momento di incorporarlo alle pagine su cui hai lavorato, si trattera' di una semplice operazione di taglia & incolla.

Footer JavaScript
codice HTML spiegazione
<!-- inizio del Volcano Web standard footer -->
<SCRIPT LANGUAGE="JavaScript">
<!-- nasconde gli script ai browser antiquati
Definisce l'inizio dell'area del footer, con i tag JavaScript appropriati
document.write('<p><hr>
<FONT FACE="helvetica,arial" size=-1>
<i>Volcano Web:</i> <B>');
Linea orizzontale inizio delle impostazioni per le dimensioni dei caratteri del testo e titolo principale del web site
document.write(document.title + '</B><BR>');
scrive il titolo del documento corrente
document.write('creato da Lorrie Lava, ');
document.write('<A HREF="mailto:lava@pele.bigu.edu?subject=' 
+ document.title + '">');
document.write('lava@pele.bigu.edu</A><br>');
Credits per la pagina con un e-mail link che inserisce automaticamente il titolo della pagina nella riga del soggetto.
document.write('Volcanic Studies, 
<A HREF="http://www.bigu.edu/">');
document.write('Big University</A><p>');</tt></font>
Altro contenuto statico.
// apporta una modifica alla data solo se il
// server fornisce una data valida
if (Date.parse(document.lastModified) > 0) {
  document.write('<B>ultima modifica: </B>' 
  + document.lastModified + '<BR>');
}
Tutto questo puo' sembrare ingannevole. Abbiamo allestito una verifica condizionale sul valore che viene tornato da document.lastModified, e se eí valido (un risultato diverso da zero da una funzione che abbiamo usato e che eí chiamata Date.parse), noi scriviamo la data della modifica. Se non riceviamo una data valida, líintero blocco viene ignorato.
document.write('<B>URL: </B>' 
  + document.location.href + '</FONT><P>');
Scrive líURL del documento corrente dato dal valore tornato dalla variabile JavaScript document.location.href
// nascosto dai browser antiquati -->
</SCRIPT>
<!-- end of Volcano Web standard footer -->
fine del blocco di codice per il footer.
La maggior parte dei contenuti dinamici in questo esempio provengono dalle ìproprietaíî di diversi ìoggettiî JavaScript, in questo caso líoggetto "document". Ogni documento HTML ha dei frammenti di informazioni inclusi al momento della sua creazione -- in altre parole sono il titolo, la data dellíultima modifica, líURL, etc. Possiamo interrogare líoggetto del documento per ottenere e poi usare questíinformazioni.

Per le informazioni che stiamo scrivendo nella pagina possiamo usare sia contenuto fisso come document.write (stringhe di testo tra apici) sia informazioni conservate in variabili JavaScript, come document.title, che uniamo tra loro con il simbolo "+" :

 'Qui cíeí qualcosa di testo <b>HTML</b> fisso per la pagina:' + document.title + '! Forte, eh?'
Il segno "+" unisce insieme il testo a formare una stringa piuí lunga, e quindi se noi lo stessimo usando in questa pagina del corso, avremmo come risultato:

sample web page
Qui cíeí qualcosa di testo HTML fisso per la pagina: 27b. JavaScript- Contenuto Dinamico! Forte, eh?

Il nostro JavaScript footer utilizza anche un test ìcondizionaleî ("if this then do that") per la data della modifica, che risulta cosií:

  if ( una condizione da verificare) {
    JavaScript statement1;
    JavaScript statement2;
          :
          :
    JavaScript statementN;
  }
che significa che se il test della parentesi alla prima riga torna un valore TRUE, noi seguiremo i passaggi tra le parentesi graffe "{" e "}"; se il test torna FALSE, noi salteremo gli statement. Con il potere di JavaScript, noi possiamo costruire dei test condizionali molto complessi, ma per adesso ci terremo sul semplice.

Questo eí líaspetto del nostro JavaScript footer se fosse stato usato per questa pagina del corso:

sample web page

Ora inseriremo il nostro footer nei nostri documenti HTML Volcano Web.

  1. Primo, apri la pagina d'entrata principale, index1.html nel tuo HTML editor. (non metteremo il footer sulla nostra pagina d'apertura "ad effetto", index.html).
  2. Cancella il contenuto HTML del nostro vecchio footer:
    
    <HR>
    <ADDRESS><B>Volcano Web</B><br>
    creato da Lorrie Lava, <A HREF="mailto:lava@pele.bigu.edu">lava@pele.bigu.edu</A><p>
    Volcanic Studies, <A HREF="http://www.bigu.edu/">Big University</A><p>
    <TT>ultima modifica: Aprile 1, 1995</TT>
    </ADDRESS>
    <p>
    <tt>URL: http://www.bigu.edu/web/index.html</tt>
    <p>
  3. Sostituiscilo con il contenuto per il nostro nuovo JavaScript footer:
    <!-- start of Volcano Web standard footers -->
    <SCRIPT LANGUAGE="JavaScript">
    <!-- hide  scripts from old browsers
    
    document.write('<p><hr><FONT FACE="helvetica,arial" size=-1><i>Volcano Web:</i> <B>');
    document.write(document.title + '</B><BR>');
    document.write('creato da Lorrie Lava, ');
    document.write('<A HREF="mailto:lava@pele.bigu.edu?subject=' + document.title + '">');
    document.write('lava@pele.bigu.edu</A><br>');
    document.write('Volcanic Studies, <A HREF="http://www.bigu.edu/">');
    document.write('Big University</A><p>');
    
    // append a modification date only if server provides a valid date
    if (Date.parse(document.lastModified) > 0) {
    	document.write('<B>ultima modifica: </B>' + document.lastModified + '<BR>');
    }
    document.write('<B>URL: </B>' + document.location.href + '</FONT><P>');	
    
    // done hiding from old browsers -->
    </SCRIPT>
    <!-- end of Volcano Web standard footers -->
    NOTA: Eí di importanza critica che i tuoi JavaScript statement siano su una linea singola, cominciando da document.write('... e finendo con ');. Se hai inserito dei caratteri di RETURN extra nel codice, questo non funzioneraí. E poi, assicurati che la struttura del blocco degli statement if (...) { sia esattamente come mostrato sopra.

    JavaScript eí ancora piuí pignolo del codice HTML per quanto riguarda i caratteri tipografici! E ci sono ancora piuí possibilitaí di errore col modo in cui sono usati gli apici.

  4. Salva ed Aggiorna. Se non ci sono errori in JavaScript, vedi se il contenuto del footer appare simile allíesempio mostrato prima (líURL dovrebbe essere diverso, naturalmente). Se hai fatto degli errori con JavaScript, confronta dettagliatamente il tuo codice con líesempio. Infine, se non appare nulla, prova a fare un altro reload. Se non funziona, molto probabilmente al tuo codice manca un apice o un ">".

  5. Ora sei pronto per tagliare & incollare il nuovo JavaScript footer nella stessa area degli altri file che fanno parte del tuo Volcano Web:
    1. explode.html
    2. height.html
    3. intro.html
    4. mars.html
    5. msh.html
    6. term.html
    7. usa.html

Non abbiamo ancora aggiornato il footer che fa parte della pagina project, che abbiamo suddiviso in una forma coi frames nella lezione 26. Potresti pensare che tutto quello che dobbiamo fare eí quello di incollarlo nel frame di questa pagina destinato al documento footer, proj_footer.html. Ma il problema qui eí che la funzione JavaScript document.location.href non visualizzeraí líURL della pagina coi frame, "...project.html" ma quello del documento per il footer. E poi, molti browser ritornano il nome del file anzicheí il titolo della pagina per il document.title di una framed web page. Finiremmo con líavere una cosa simile a questa:

sample web page

Per aggirare questo problema, potremmo tornare indietro ed usare un footer regolare scritto in HTML... oppure usare un codice JavaScript piuí creativo (e complesso). Noi prenderemo la busta numero due, usando un codice JavaScript per "estrarre" líinformazione che vogliamo appaia dallíoggetto document.

  1. Apri il tuo proj_footer.html nel text editor.
  2. Cancella il vecchio footer come abbiamo fatto per le sezioni precedenti.
  3. Sostituiscilo con questo codice JavaScript:
    
    <!-- start of Volcano Web standard footers -->
    <SCRIPT LANGUAGE="JavaScript">
    <!-- hide  scripts from old browsers
    
    document.write('<p><hr><FONT FACE="helvetica,arial" size=-1><i>Volcano Web:</i> <B>');
    document.write('Project</B><BR>');
    document.write('creato da Lorrie Lava, ');
    document.write('<A HREF="mailto:lava@pele.bigu.edu?subject=Project">');
    document.write('lava@pele.bigu.edu</A><br>');
    document.write('Volcanic Studies, <A HREF="http://www.bigu.edu/">');
    document.write('Big University</A><p>');
    
    // append a modification date only if server provides a valid date
    if (Date.parse(document.lastModified) > 0) {
    	document.write('<B>ultima modifica: </B>' + document.lastModified + '<BR>');
    }
    
    // estrae il vero URL da questo file name, assumendo questo file
    // is "proj_footer.html" or "proj_footer.htm"
    // and the proper URL for the frameset is "proj.html" or "proj.htm"
    myURL = document.location.href;
    
    // Get the suffix on the file name (everything after "_footer")
    myExt = myURL.substring(myURL.indexOf("_footer") + 7, myURL.length) 
    
    // Get the part of the URL that goes up to "proj"
    myUrl = myURL.substring(0,myURL.indexOf("_footer"))
    
    // Assembla la stringa appropriata
    document.write('<B>URL: </B>' + myUrl + myExt + '</FONT><P>');	
    
    // done hiding from old browsers -->
    </SCRIPT>
    <!-- end of Volcano Web standard footers -->
    
  4. Salva questo documento ed Aggiorna la pagina del main frame web, project.html nel tuo web browser.
In questo esempio, abbiamo usato delle funzioni avanzate di JavaScript per realizzare cose come líestrazione di una porzione di stringa da uníaltra ed il reperimento dellíallocazione di un carattere particolare in una stringa. Sfortunatamente, eí tutto oltre gli scopi e le possibilitaí díinsegnamento di questo corso per quanto riguarda il JavaScript; ti rimandiamo ai nostri riferimenti sui corsi raccomandati e sulle fonti.

Ulteriore Contenuto Dinamico

Ora ti mostreremo ancora piuí cose che eí possibile fare con JavaScript. Uníaltra funzionalitaí built-in eí la capacitaí di usare il computer di colui che naviga nella pagina per ottenere la data e líora (assumendo che questi li abbia regolati correttamente!). Poi le possiamo usare per ìstampareî a video un saluto sulla pagina con cui si inizia il sito. Possiamo scrivere "Buon Giorno!î, ìBuon Pomeriggio!î, ìBuona Sera!", o "Non eí Tardi per Stare davanti al Computer?" a seconda del momento della giornata in cui la funzione ci viene tornata attraverso JavaScript.

La prima cosa che devi fare eí quella di creare un oggetto Date in JavaScript:

  var today = new Date(); 
Ora noi abbiamo qualcosa chiamato "today" a cui ci possiamo riferire per ottenere le informazioni per quanto riguarda la data ed il tempo. JavaScript conserva queste informazioni internamente come se si trattasse del numero di secondi a partire da una data di riferimento, tipo il 1 Gennaio 1900. Ma líoggetto JavaScript Date ha proprietaí che ci permettono di ottenere esattamente il mese, il giorno, líanno, il minuto, il secondo correnti. Una delle piuí semplici da utilizzare eí Date.toLocaleString() che visualizzeraí la data in base a quelle che sono le disposizioni del computer dellíutente (dato che ci sono convenzioni diverse per la visualizzazione delle date a seconda del paese in cui ci si trova). In questo modo, potremmo scrivere un codice tipo:
  var today = new Date(); 
  document.write('Secondo il mio orologio JavaScript, sono le ' + today.toLocaleString() )'
da cui dovrebbe risultare:

sample web page

Se tu fai un reload di questa pagina del corso, líora visualizzata saraí cambiata. Nota che la formattazione con cui viene tornata la data dipende dal tipo di computer.

JavaScript offre altre informazioni sul web browser usato dalla persona che sta vedendo la pagina, attraverso l'oggetto navigator, e quindi noi possiamo vedere sia di quale programma web si tratta (NetScape, Internet Explorer, etc) sia la versione installata. Tutto questo risulta utile se si stanno usando delle caratteristiche in una pagina web che richiedono un certo tipo di web browser-- si puo' usare del codice JavaScript per "testare" il set up e visualizzare informazioni specifiche per browser o versioni diverse.

Ora useremo gli oggetti JavaScript Date e navigator per fare comparire a video un saluto personalizzato nella nostra pagina principale e poi faremo un po' di lavoro extra perche' JavaScript mostri anche il giorno della settimana ("Lunedi', Martedi'", etc) e poi scriva un qualche messaggio se il visitatore usa una versione poco aggiornata del programma. Nelle righe seguenti abbiamo spiegato brevemente gli effetti che il codice produce, ma se vuoi vedere da solo come funziona, puoi copiarlo, incollarlo e testarlo nel tuo browser.

  1. Apri il documento index1.html nel tuo text editor.
  2. Tra le parti in cui si legge:
    In questa lezione userai la Rete per cercare
     informazioni sui vulcani e poi scrivere il tuo resoconto
    sui risultati.
    e
    <br clear=left>
    <hr>
    <p align=center>
    inserisci questo codice JavaScript:
    <p>
    <SCRIPT LANGUAGE="JavaScript">
    <!-- hide from old browsers
    
    // prende l'oggetto date
    var today = new Date(); 
    var days = new Array('Domenica', 'Luned&237;', 'Martedí', 'Mercoledí', 'Giovedí', 'Venerdí', 'Sabato');
    
    // scrive la data 
    document.write('Un benvenuto in questa piacevole giornata di
    '); document.write('' + days[today.getDay()] + ', '); document.write(today.toLocaleString() + ''); // scrive una stringa di benvenuto ricoscendo la versione del browser document.write('

    Speriamo tu possa goderti le tue esperienze web con la tua versione di'); document.write(navigator.appName + ' ' + parseFloat(navigator.appVersion)); // scrive un avvertimento per i web browser antiquati if ( parseInt( navigator.appVersion) < 3 ) { document.write(' Hmmm.. questa risulta essere una versione piuttosto vecchia di'); document.write(navigator.appName + '! Forse che sia tempo di pensare ad un upgrade?'); } // done hiding --> </SCRIPT>

  3. Salva ed Aggiorna
In questo script abbiamo prima creato l'oggetto Date e poi l'abbiamo messo in una variabile che noi chiamiamo "today". Poi creiamo un "array", o un elenco di cose, chiamato "days" che contiene i nomi dei giorni della settimana. Gli array sono contenitori veramente maneggevoli perche' ci si puo' riferire ad un elemento in questo modo:
  days[2]
dove il numero tra parentesi quadre indica la posizione dell'elemento che stiamo cercando nell'array. Ma fai attenzione! JavaScript comincia a contare gli array da 0, quindi days[2] in realta' ritorna il terzo elemento, o "Martedí".

Il nostro codice scrive una stringa di testo di benevenuto e poi usa l'array per estrarre il nome esatto del giorno. La funzione today.getDay() dell'oggetto Date ritorna a numero da 0 a 6 che corrisponde al giorno della settimana attualmente corrente. Quindi noi possiamo combinare la funzione dell'oggetto Date ed il nostro array di nomi per stampare a video il nome del giorno corretto.

Seguendo questo, noi usiamo la formattazione fornita da today.toLocaleString() per scrivere la data completa.

Il blocco seguente stampa il nome del browser ("NetScape", "Internet Explorer") seguito dalla versione ritornataci dalla funzione navigator.appVersion , che torna un nome veramente lungo e descrittivo. Mettendolo dentro una funzione chiamata parseFloat, essa estrae o "parses" la parte di questa stringa che corrisponde al numero della versione. Per un confronto, vedi:

Quest'ultimo elemento fornisce una stringa di testo ben formattata e che ha lo scopo di visualizzare il tipo di programma ed il numero della versione. Il codice parseInt(navigator.appVersion) tira fuori dall'intero numero parte di questa informazione. Se vai a vedere l'ultima porzione del nostro codice appena elaborato, noi testiamo il valore parseInt e scriviamo un avvertimento extra se e' minore del nostro valore di prova, che e' 3. Per vedere la differenza, dovresti cambiare il 3 in un numero superiore a quello della presente versione del tuo browser.

Controlla il Tuo Lavoro

Confronta la tua pagina web con un esempio di come il documento dovrebbe apparire. Se la tua pagina web fosse diversa dall'esempio, o se i link non dovessero funzionare correttamente, controlla il testo che hai digitato nell'editor di testo. Nota che JavaScript e' veramente sensibile agli errori topografici-- un apice o un punto e virgola mancanti possono rovinare un'intera pagina!

Verifica

Argomenti di verifica per questa lezione:
  1. Perche' e' importante la posizione del tuo documento HTML in cui inserisci il codice JavaScript per la scrittura del contenuto dinamico?
  2. Quale informazione puoi ricavare dall'oggetto JavaScript document ? Quale e' la formattazione per la scrittura a video di queste informazioni all'interno di una web page?
  3. Come si ottiene la data e l'ora corrente con JavaScript? i giorni della settimana?
  4. Quali informazioni si possono ottenere riguardo il web browser che il visitatore sta usando?

Pratica Indipendente

Copia la formattazione per il JavaScript che abbiamo usato in questa lezione nei tuoi documenti personali e vedi se riesci a cambiare la formattazione HTML a seconda di quelle che sono le tue necessita'.

Puoi pensare ad un modo per scrivere un codice JavaScript che riesca a visualizzare un messaggio di benvenuto diverso per ogni ora del giorno? Aiutino: Usa un array per creare il testo di tutti i tuoi messaggi, ed usa la funzione Date.getHours() per determinare l'ora corrente.


Prossimamente....

Dose Quarta... funzioni e codice per l'apertura di finestre web di ogni dimensione e con ogni configurazione. Dove le vuoi tu e con quanti bottoni di navigazione serve a te.
VAI A.... | Indice Delle Lezioni | indietro: "JavaScript: Alert e MouseOver" | avanti: "JavaScript: Window Opener Personalizzati" |

Writing HTML: Lezione 27b: Una Leggera Dose di JavaScript : Contenuto Dinamico
©1994-1999 Maricopa Center for Learning and Instruction (MCLI)
Maricopa Community Colleges

The Internet Connection at MCLI is Alan Levine --}
Comments to mailto:alan.levine@domail.maricopa.edu?subject=Writing HTML