Introduzione all`HTML dinamico
Transcript
Introduzione all`HTML dinamico
5.2) Aggiunta di Script e accesso agli attributi dei tag I fogli di stile finora rischi mostrano come sia possibile creare non numerosi effetti nelle pagine html. La vera potenza del html dinamico è rappresentata però dalla capacità di manipolare dinamicamente le proprietà dei singoli tag mediante degli script che permettono di aggiornare le posizioni e gli stili degli elementi della pagina. Esistono molti linguaggi di script, fra i più famosi VBscript e Javascript. Per studio più approfondito di questi linguaggi avverrà in un successivo capitolo. Qui daremo solo uno sguardo generale al modo in cui è possibile interagire con una pagina Web per mezzo di uno script. Ricordiamo che l’esecuzione della pagina Web e dello script avviene sempre dal lato client. 5.2.1) Posizionamento di Script Il codice è convenzionato nella pagina all’interno dei marcatori <SCRIPT> e </SCRIPT>. All’interno del marcatore d’inizio si può specificare l’attributo LANGUAGE per indicare al browser quale interprete deve utilizzare per l’esecuzione della pagina. Se si omette tale attributo il browser tenterà di interpretare tale informazione dalle istruzioni, rendendo più lenta l’esecuzione. Per default si suppone che il linguaggio sia JavaScript. <SCRIPT LANGUAGE=JAVASCRIPT> … istruzioni javascript .... </SCRIPT> <SCRIPT LANGUAGE=VBSCRIPT> … istruzioni vbscript .... </SCRIPT> Il codice può essere posizionato ovunque nella pagina. Se si sta utilizzando il codice per inserire qualcosa nella pagina Web, come ad esempio l’ora o la data, lo script deve essere posizionato appropriatamente: <SCRIPT LANGUAGE=VBSCRIPT> document.write (Now) </SCRIPT> in questo esempio viene eseguita la funzione Now del VBscript ed il risultato viene passato al metodo write dell’oggetto document (di questi oggetti dei relativi metodi parleremo meglio in un successivo capitolo). Se la pagina contenente il codice fosse eseguita su un browser non abilitato o non in grado di riconoscere il linguaggio, si otterrebbe il risultato della visualizzazione del codice e non della sua esecuzione. Per evitare questo problema si adotta la tecnica di racchiudere il codice tra due tag di commento <!-- e --> in modo da nasconderlo durante la visualizzazione. <SCRIPT LANGUAGE=JAVASCRIPT> <!-… istruzioni javascript .... --> </SCRIPT> 5.2.2) Creazione di routine di script Spesso si usa la tecnica di creare routine di codice separate che verranno poi richiamate nei punti opportuni allo stesso modo come si usano i sottoprogrammi nei linguaggi di programmazione. <SCRIPT LANGUAGE=JAVASCRIPT> <!-function routine1(){ …. } function window_onLoad(){ …. } function routine2(){ …. return 42 ; } --> </SCRIPT> <SCRIPT LANGUAGE=VBSCRIPT> <!-sub routine1() …. End sub sub window_onLoad() …. 5.2.3) Accesso ai tag HTML tramite script HTML dinamico permette, attraverso l'uso congiunto di CSS (Cascading Style Sheet), script e codice HTML, di creare pagine web interattive mediante i cosiddetti stili dinamici. Nella pratica ciò significa che gli sviluppatori di pagine web 14 Appunti a cura del Prof. G.Tombolini La programmazione Web – Html dinamico hanno, grazie a queste nuove specifiche, la possibilità di modificare l'aspetto di un documento senza che questo venga ricaricato. L’aggiornamento delle proprietà utilizzando il codice avviene ricorrendo all’oggetto style. Dato che l’attributo STYLE permette di impostare le proprietà di visualizzazione dei vari marcatori, l’oggetto style permette di accedere e modificare dinamicamente le stesse. Il marcatore che si vuole modificare, va comunque identificato univocamente all’interno del testo; questo si ottiene utilizzando la proprietà ID con la quale è possibile assegnare un nome ad ogni oggetto di una pagina Web. L’accesso avviene con un tecnica del tipo <idTag>.<proprietà>. Esempio <IMG ID=MyImage SRC=”logo1.gif” WIDTH=100 HEIGHT=100> si ottiene l’accesso alla larghezza e all’altezza di grande MyImage.width e MyImage.height o anche <IMG ID=MyImage SRC=”logo1.gif” STYLE=”position:absolute; top:50; left:200”> MyImage.style.top e MyImage.style.left Non si può fare riferimento ad una proprietà che non è stata dichiarata nel marcatore. Per ovviare a questo problema è possibile utilizzare tre metodi, riconosciuti da tutti i marcatori, in grado di aggiungere, rimuovere e variare proprietà. MyImage.removeAttribute “top” MyImage.setAttribute “color” “blue” MsgBox MyImage.getAttribute “width” Per inciso, si ricorda che l’accesso alle proprietà top, left, width e height di un marcatore può essere effettuata utilizzando le proprietà postop, posleft, poswidth e posheight. Ulteriori informazioni relative all’uso del linguaggio di script verranno fornite dopo lo studio del DOM (document object model). 15 Appunti a cura del Prof. G.Tombolini La programmazione Web – Html dinamico 5.3) Il Document Object Model –DOM Il DOM è la rappresentazione che i browser fanno nella pagina HTML caricata. Tramite questa rappresentazione si riesce a manipolare il contenuto della pagina stessa. Purtroppo tale rappresentazione differisce da browser a browser. Attualmente il DOM implementato in MSIE 4 è più completo di quello proposto da Netscape. Il nuovo DOM di MS è accessibile sia a JavaScript che VBScript ed include l'oggetto "all", che rappresenta l'insieme di tutti gli elementi di una pagina. Nella versione messa a punto da Netscape gli eventi sono limitati a specifici oggetti, mentre Microsoft apre gli elementi di una pagina a tutti gli eventi. Ciò consente l'accesso ad ogni attributo di un elemento, compresi: colore, sfondo, font. All'interno del DOM non tutti gli oggetti si trovano sullo stesso piano, ma ognuno di essi esiste in quanto relazionato ad insiemi di altri oggetti. Il modello di oggetto è un’interfaccia tra il codice sorgente HTML dinamico nella pagina e le routine software del browser che creano la finestra inseriscono in essa gli elementi definiti nella pagina. Il modello di oggetto espone una gamma di oggetti, metodi, proprietà ed eventi che sono presenti e attivi all’interno del software del browser, al html e al codice di script della pagina 5.3.1) Oggetto WINDOW L'oggetto di primo livello è "window" che è l’oggetto genitore di tutti gli altri oggetti della struttura. Esso a sua volta, contiene l'oggetto "document" che in realtà è il nucleo di tutte le cose. L'oggetto "window" espone le informazioni relative al documento e all'URL corrente, nonché agli URL visitati. Come i documenti HTML tradizionali, i FRAMESET vengono esposti mediante l'elemento "document", ma a differenza dei primi suddividono lo schermo in piu' frames. Tale peculiarità fa sì che ogni FRAMESET venga esposto come un altro oggetto "window". All’interno del modello di oggetto possiamo trovare delle collez ioni di oggetti (come frames). Si può accedere al singolo oggetto di una collezione per mezzo del suo nome o della sua posizione numerica. L’oggetto predefinito per un’eventuale script della pagina è l’oggetto window attivo. Si può usare la parola chiave parent per risalire la gerarchia delle Window; si può accedere alla finestra di livello più alto per mezzo della parola chiave top. Progetto Window a una gamma di proprietà, metodi ed eventi. Esaminiamo qui quelli di utili. 5.3.1.1) Proprietà dell’oggetto WINDOW La tabella che segue mostra tutte le proprietà di un oggetto Window: Parent Self Top Name Opener Closed Status defaultStatus returnValue Client Document Event History location Navigator Screen restituisce la finestra superiore della finestra corrente Fornisce un riferimento alla finestra corrente fornisce un riferimento all’oggetto Window superiore Specifica il nome della finestra Restituisce un riferimento alla finestra che ha creato la finestra corrente Indica nella finestra chiusa Il testo visualizzato nella barra di stato del browser Il messaggio predefinito visualizzato nella barra di Stato del browser Consente di specificare un valore di ritorno per l’evento o per una finestra di dialogo Un riferimento che restituisce l’oggetto navigator del browser Riferimento a sola lettura all’oggetto document della finestra Riferimento a sola lettura all’oggetto event globale Riferimento a sola lettura all’oggetto history della finestra Riferimento a sola lettura all’oggetto location della finestra Riferimento a sola lettura all’oggetto navigator della finestra Riferimento a sola lettura all’oggetto screen globale 5.3.1.2) Metodi dell’oggetto WINDOW Forniscono vari modi per manipolare una finestra ed eseguire operazioni al suo interno. • Metodi Open e close: creano una nuova finestra (window.open “nuova.htm”) o chiudono la finestra attuale. Il formato è: window.open URL, caratteristiche, nome. Caratteristiche rappresenta una stringa contenente le istruzioni per specificare la posizione, la dimensione, il tipo di finestra, le barre di scorrimento, la barra di Stato, della barra degli strumenti, ecc. 16 Appunti a cura del Prof. G.Tombolini • • • • • • • • • • • • La programmazione Web – Html dinamico Il metodo showModalDialog permette di creare delle finestre di dialogo o modali (window.showModalDialog “nuova.htm”). Il metodo showHelp permette di creare delle finestre di help (window.showHelp “helppage.chm”). Il metodo alert permette di creare una finestra di messaggio (window.alert “questo è un messaggio”). Il metodo prompt permette di acquisire un input dall’utente (locazione=window.prompt (“digita il tuo nome”, “anonimo”). Il metodo confirm permette di acquisire una conferma dall’utente (risultato=window.prompt (“digita il tuo nome”, “anonimo”) ). Il metodo navigate permette caricare una nuova pagina nella finestra attuale (window.navigate URL). Il metodo blur equivale alla pressione del tasto TAB spostando il fuoco dalla finestra attuale a quella successiva. Il metodo focus sposta il fuoco sulla finestra attuale. Il metodo scroll trascorrere la finestra di 250 pixel a destra e 150 in basso. Il metodo setTimeout permette di impostare un temporizzatore che avvii l’esecuzione dopo un certo numero di millisec (window.setTimeout(“Mytimer”, num_ms,”VBSCRIPT”), dove Mytimer è una routine di codice script: sub Mytimer …. End sub) . La routine viene eseguita una sola volta. clearTiemout permette di resettare il Timer impostato. Il metodo setInterval funziona come setTimeout con la differenza che viene richiamato ripetutamente. clearInterval permette di resettare il Timer impostato. Il metodo execscript permette eseguire uno script. 5.3.1.3) Eventi dell’oggetto WINDOW onblur Onfocus Onhelp Onresize Onscroll Onerror Onbeforeunload Onload onunload Si verifica quando il controllo perde il fuoco di immissione Si rideva quando il controllo riceve il fuoco di immissione Si verifica quando l’utente preme F1 o Help Si verifica quando l’elemento od oggetto viene ridimensionato dall’utente Si verifica quando l’utente fa scorrere il contenuto della pagina o elemento Si verifica quando si presenta un errore di caricamento di un documento o immagine Si verifica appena prima che la pagina venga scaricata, consentendo di annullare l’evento unload Si rideva gravemente stato completamente caricato Si è di linea demente prima della pagina venga scaricata 5.3.2) Oggetti sussidiari all’oggetto WINDOW: history L’oggetto history contiene informazioni sugli url che il browser ha visitato, memorizzati nell’elenco history. Ciò consente di spostarsi all’interno dell’elenco. L’unica proprietà è length restituisce il numero di elementi della collezione. I metodi sono: • Back carica l’url precedente nell’elenco history del browser • Forward carica l’url successivo nell’elenco history del browser • Go n carica l’url nella posizione n nell’elenco history del browser 5.3.3) Oggetti sussidiari all’oggetto WINDOW: Navigator Rappresenta l’applicazione stessa del browser che fornisce informazioni sul suo produttore, sulla versione e le sue capacità. Proprietà appCodeName appName appVersion cookieEnabled userAgent Collezione mimeTypes Plugins metodo javaEnabled taintEnabled descrizione Il nome di codice del browser Il nome di prodotto del browser La versione del browser Indicate sono consentiti interventi nel browser da parte del client Intestazione dell’agente utilizzatore trasmesso nel protocollo http dal client al server descrizione Collezione di tutti documenti ed i tipi di file e supportati dal browser Collezione di tutti elementi incorporati nella pagina descrizione Restituisce il True o False a seconda che sia o no installato un VM java Restituisce false per compatibilità con Netscape 17 Appunti a cura del Prof. G.Tombolini La programmazione Web – Html dinamico 5.3.4) Oggetti sussidiari all’oggetto WINDOW: Location Contiene informazioni sull’url della pagina corrente e consente di ricaricare o caricarono a pagina. Proprietà Href Hash Host Hostname Pathname port Protocol Search metodo Assign Reload Replace descrizione L’url completo sotto forma di stringa questa proprietà rappresenta anche un metodo di navigazione come navigate Stringa che segue il simbolo # nell’url La parte hostname:port della locazione o url la parte hostname della locazione o url il nome di percorso del file o oggetto che segue la terza barra in un url Il numero di porta in un url Là sotto stringhe di viale fino ai primi due punti inclusi che indica il metodo di accesso dell’url Il contenuto della stringa di ricerca o dati del modulo seguiti da ? nell’urlo completo descrizione Carica un’altra pagina. È equivalente a modificare la proprietà window.location.href Carica di nuova pagina corrente Carica la pagina, sostituendo con il relativo url la voce del documento corrente nella storia della sezione 5.3.5) Oggetti sussidiari all’oggetto WINDOW: event Quest’oggetto consente al linguaggio di script di ottenere maggiori informazioni su ogni evento che si verifica nel browser. Fornisce una grande gamma di proprietà. Proprietà x / y screenX / screenY button altkey/ ctrlKey / shiftKey keyCode fromElement/ toElement cancelBubble descrizione Coordinata x / y del puntatore del mouse coordinata x / y del puntatore del mouse in relazione allo schermo Il pulsante del mouse che è stato premuto per attivare l’evento restituisce lo stato dei tasti alt / ctrl / shift il codice ascii nel tasto premuto Restituisce l’elemento dal quale o sul quale si sta spostando il mouse Viene impostato per evitare che l’evento corrente si propaghi attraverso la gerarchia 5.3.6) Oggetti sussidiari all’oggetto WINDOW: screen Fornisce informazioni sulla risoluzione dello schermo. Proprietà Width Height bufferDepth colorDepth UpdateInterval descrizione La larghezza in pixel dello schermo dell’utente L’altezza in pixel dello schermo deludente Specifica se e come debba essere utilizzato un buffer bitmap fuori schermo Il numero di bit per pixel del dispositivo di visualizzazione dello schermo Imposta o restituisce l’intervallo tra aggiornamenti di schermo nel client 18 Appunti a cura del Prof. G.Tombolini La programmazione Web – Html dinamico 5.3.7) L’oggetto DOCUMENT L’oggetto document rappresenta il documento HTML nella finestra del browser. È possibile utilizzare quest’oggetto per ottenere tutti i tipi di informazione e relativi al documento, tramite le sue proprietà e i suoi metodi, ma non si può utilizzare anche per modificare gli elementi e il testo della pagina. Esso può essere utilizzato inoltre per elaborare gli eventi. 5.3.7.1) Le proprietà dell’oggetto DOCUMENT Proprietà Title Body Selection URL Location Domain Cookie lastModified parentWindow descrizione Il titolo del documento definito nelle marcatore <TITLE> Riferimento a sola lettura all’oggetto del corpo implicito del documento Riferimento a sola lettura all’oggetto selezione del documento Uniform Resource Locator (indirizzo) relativo al documento corrente L’url completo nel documento Il dominio del documento da utilizzare per motivi sicurezza Il valore stringa di un elemento memorizzato dal browser Calata dell’ultima modifica del file sorgente relativo alla pagina Restituisce la finestra che contiene il documento bgColor fgColor linkColor alinkColor vlinkColor Il colore di sfondo da utilizzare per un elemento Il colore del testo in primo piano del documento Il colore relativo ai collegamenti non visitati nella pagina Il colore del collegamento attivo nella pagina sul quale è puntato il mouse Il colore dei collegamenti visitati nella pagina activeElement readyState Identifica l’elemento che detiene il focus Specifica lo stato corrente di un oggetto inizializzato/2=caricamento/3=interattivo/4=completo) L’url della pagina alla quale fa riferimento al pagina corrente Referrer durante il suo 5.3.7.2) I metodi dell’oggetto DOCUMENT metodo Open Write (writeln) Close Clear createElement elementFromPoint execCommand descrizione A quel documento come flusso per raccogliere l’output o una nuova finestra del browser Scrive testo e html in un documento nella finestra specificata (con ritorno carrello) Chiude un documento o la finestra del browser Cancella il contenuto di una selezione o oggetto document Crea un’istanza di un’immagine o elemento Restituisce l’elemento che si trova in corrispondenza delle coordinate xy rispetto alla finestra Che segue un comando sulla selezione un intervallo di documento 5.3.7.3) Gli eventi dell’oggetto DOCUMENT Eventi Onclick Ondblclick Onmousedown Onmousemove Onmouseout Onmouseover Onmouseup Ondragstart onselectstart descrizione clicca con il pulsante del mouse o sul documento Doppio clic che non documento Si verifica quando l’utente preme un pulsante del mouse Si verifica quando l’utente sposta il puntatore del mouse Si verifica quando il puntatore del mouse lascia l’elemento Si verifica quando il puntatore del mouse entra inizialmente sull’elemento Si verifica quando l’utente rilascia un pulsante del mouse Si verifica quando l’utente inizia a trascinare un elemento o selezione Si verifica quando l’utente inizia la selezione del contenuto di un elemento Onkeydown Onkeypress Onkeyup Onhelp Si verifica quando l’utente per un tasto Si verifica quando l’utente per un tasto ed è disponibile un carattere Seri via quando l’utente rilascia un tasto Si verifica quando l’utente preme il tasto F1 o help Onload Si verifica quando un elemento ha completato il caricamento 19 caricamento (1=non Appunti a cura del Prof. G.Tombolini Onreadystatechange Onafterupdate Onbeforeupdate La programmazione Web – Html dinamico Si verifica quando la proprietà readyState relativa ad un oggetto è stata modificata Si verifica quando il trasferimento dei dati dall’elemento al fornitore di dati è completato Si verifica prima del trasferimento dei dati modificati al fornitore di dati quando l’elemento perdere ilnon focus o la pagina viene scaricata 5.3.7.4) Le collezioni dell’oggetto DOCUMENT collezioni All Anchors Applets Forms Frames Images Links Plugins Scripts styleSheets descrizione Collezioni di tutti i tag ed elementi nel corpo del documento Collezioni tutte le ancora nel documento Collezioni di tutti oggetti nel documento compresi i controlli intrinseci, immagini applets e altri oggetti Collezione di tutti i moduli nella pagina Collezione di tutti riquadri indefiniti all’interno di un tag <FRAMESET> Collezione di tutte le immagini nella pagina Collezione di tutti collegamenti e blocchi<AREA> nella pagina Collezione di tutti elementi incorporati nella pagina Collezioni di tutte le sezioni <SCRIPT> nella pagina Collezione di tutti i singoli oggetti di proprietà di stile definiti per un documento Si può accedere ad una collezione in due modi diversi: document.frames(1) o document.frames(“mainframe”) se si è assegnato un nome ad un oggetto per mezzo della proprietà NAME, è possibile accedere ad esso nel modo seguente: document.images(“myImage”). Si può intercettare il clic su un documento utilizzando il codice seguente: <IMG SRC=”logo.gif” NAME=”myImage”> <SCRIPT LANGUAGE=VBSCRIPT> sub document_onclick() msgbox document.images(“myImage”).src end sub </SCRIPT> questo codice invia un messaggio a video contenente l’indirizzo dell’immagine visualizzata quando si fa clic sul documento. Sicuramente importante è la collezione forms in quanto contenitore di altri oggetti. Questa collezione a una propria sotto collezione (elements) che permette ad uno script di accedere ai singoli elementi di un form per l’elaborazione in locale lato client dei dati presenti nei singoli controlli. document.forms(“myform”).elements(“mytextbox”) come tutte le collezioni, essendo esse contenitori di oggetti, sia hanno a disposizione le proprietà ed i metodi propri dell’oggetto a cui fa riferimento. Esempio: document.images(“myimage”).src document.forms(“myform”).elements(“mytextbox”).value document.forms(“myform”).elements(“mytextbox”).id document.links(“mylink”).href document.plugins(0).name e per i metodi document.forms(“myform”).elements(“mytextbox”).focus 5.3.8) Oggetti sussidiari a DOCUMENT: oggetto SELECTION L’oggetto selection fornisce informazioni sulla selezione in corso effettuata dall’utente, quando trascende il mouse sulla pagina. Esso consente di accedere tutti elementi selezionati compreso il testo piano all’interno della pagina. Proprietà Type descrizione Il tipo di selezione effettuata: 0 = nessuna/1 = testo/2 = controllo/tre o alla tabella metodi Clear createRange empty descrizione Cancella il contenuto della selezione Restituisce una copia dell’intervallo correntemente selezionato Disattiva la lezione corrente che importa a zero il tipo di selezione 5.3.8) Oggetti sussidiari a DOCUMENT: oggetto FILTER L’oggetto filter lavora principalmente sulle immagini che consente di variare l’aspetto dell’immagine grafica delle pagine Web. 20 Appunti a cura del Prof. G.Tombolini La programmazione Web – Html dinamico 5.4) Gli script e la gestione degli eventi Quando si esegue un’azione, ad esempio clic su una finestra con il mouse, il sistema operativo rileva un evento. Questo è semplicemente un segnale che è accaduto qualcosa. Windows esamina l’evento per decidere cosa lo ha provocato che cosa deve fare in risposta all’evento stesso. Anche la HTML dinamico fornisce all’utente la possibilità di rispondere a tutte le cose che avvengono nel browser. È possibile collegare un codice nelle pagine agli eventi che si possono verificare ed utilizzarlo per interagire con il visualizzatore delle pagine. 5.4.1) Collegare gli script agli eventi Ci sono diversi modi per collegare il codice ad un evento. Il modo migliore è quello di rispondere all’evento per mezzo di una funzione il cui nome è una combinazione del nome dell’elemento e del nome dell’evento. Vediamone alcuni gli esempi in VBSCRIPT: <H2 ID=MyHeading> testo di prova </H2> …… <SCRIPT LANGUAGE=VBSCRIPT> sub MyHeading_onClick() MsgBox “hai fatto click” end sub </SCRIPT> oppure <H2 LANGUAGE=VBSCRIPT ONCLICK=”MyCode”> testo di prova </H2> …… <SCRIPT LANGUAGE=VBSCRIPT> sub MyCode() MsgBox “hai fatto click” end sub </SCRIPT> oppure <H2 LANGUAGE=VBSCRIPT ONCLICK=”MsgBox ‘hai fatto click’”> testo di prova </H2> oppure <H2 ID=MyHeading> testo di prova </H2> ……. <SCRIPT LANGUAGE=VBSCRIPT FOR=MyHeading EVENT=ONCLICK> MsgBox “hai fatto click” </SCRIPT> In JavaScript esistono meno possibilità: <H2 ONCLICK=”MyCode()”> testo di prova </H2> …… <SCRIPT LANGUAGE=JAVASCRIPT> function MyCode() { alert (“hai fatto click”); } </SCRIPT> Javascript è predefinito e può essere omesso oppure <H2 LANGUAGE=JAVASCRIPT ONCLICK=”alert(‘hai fatto click’);”> testo di prova </H2> oppure <H2 ID=MyHeading> testo di prova </H2> ……. <SCRIPT LANGUAGE= JAVASCRIPT FOR=MyHeading EVENT=onclick> alert( “hai fatto click”); </SCRIPT> oppure <H2 ID=MyHeading> testo di prova </H2> …… <SCRIPT LANGUAGE= JAVASCRIPT > function MyHeading.onclick() { alert( “hai fatto click”); } function window.onload() { alert( “appena caricato”); } </SCRIPT> Questa tecnica è meno usata Gestore di finestra 21 Appunti a cura del Prof. G.Tombolini La programmazione Web – Html dinamico si possono inserire dichiarazioni di relative a gestori di eventi sia a livello di singolo marcatore, sia livello di documento (inserendoli nel marcatore body), sia a livello di Window (inserendoli nel marcatore HTML). Un marcatore può anche contenere più gestori di eventi. Alcuni eventi come onsubmit permettono di fornire un valore di ritorno che controlli il comportamento del browser. Vediamone un esempio: ….. <FORM ID=MyForm ONSUBMIT=”return controlla()” action=”http://……”> INDIRIZZO DI POSTA:<INPUT TYPE=TEXT ID=Email> <INPUT TYPE=SUBMIT> </FORM> ….. <SCRIPT LANGUAGE= JAVASCRIPT > function controlla() { straddr=document.forms[“MyForm”].elements[“Email”].value; if(straddr.indexOf(“@”) != -1){ return true; } else { alert( “e-mail errata”); return false; } } </SCRIPT> qui si vede come il tasto submit non invia direttamente le informazioni al server, ma viene richiamata una funzione di controllo il cui valore di ritorno viene passato al browser (false=non invia, cioè cancella l’evento submit, true in via i dati). 5.4.2) Rispondere agli eventi L’ HTML dinamico mette a posizione l’oggetto event (come oggetto sussidiario dell’oggetto Window) per ottenere maggiori informazioni circa l’evento avvenuto. Questo oggetto viene costantemente aggiornato ad ogni evento avvenuto. L’uso avviene attraverso le scrittura di codice all’interno di funzioni di gestione di eventi. … sub MyHeading_onmousedown() …. If window.event.button = 1 then msgbox “tasto sinistro” … end sub sub document_onkeypress() ….. if window.event.shiftKey then msgbox “shift premuto” ….. end sub spesso si vuole accedere alle proprietà dell’oggetto sul quale si è verificato l’evento. In tal caso abbiamo a disposizione la parola chiave Me per il linguaggio VBscript e la parola chiave this per il linguaggio Javascript. Si può comunque accedere a qualsiasi oggetto facendo riferimento ad esso tramite il suo id univoco, assegnato tramite la proprietà ID. Per quanto riguarda la gestione degli eventi, occorre ricordare che questa viene seguente modo: per prima cosa viene ricercato il codice di evento relativo all’oggetto con z più elevato, una volta eseguito si passa a ricercare il codice del contenitore (l’oggetto con z subito interiore) e così via fino a che esistono contenitori. Esempio: <DIV ID=Mydiv ..> <H3 ID=MyHead …>testo di prova </H3> </DIV> se si fa click sulla frase ‘testo di prova’ per prima cosa viene ricercata da routine di evento MyHead_onclick(), una volta eseguita viene ricercata dall’ordine di evento MyDiv_onclick() ed infine la rovina di evento document_onclick(). Questo è quanto viene denominato event bubbling. Se non si vuole la propagazione di un evento ai contenitori sottostanti si può utilizzare la proprietà cancelBubble dell’oggetto event. Assegnandogli il valore di true si interrompe la catena degli eventi. Interessante sicuramente l’uso della proprietà returnValue dell’oggetto event la quale permette di accettare (true) o cancellare(false) l’azione predefinita dell’oggetto. Esempio: <A ID=MyLink HREF=”…..”> testo di prova </A> …… <SCRIPT LANGUAGE= VBSCRIPT > sub MyLink_onClick() if MsgBox (“te ne vai?” vbYesNoe+vbQuestion, “salto?”) = vbNo then window.event.returnValue=false end if end sub </SCRIPT> 22 Appunti a cura del Prof. G.Tombolini La programmazione Web – Html dinamico 5.5) Gestione finestre e finestre di dialogo Spesso è comodo creare dinamicamente nuove finestre in cui visualizzare pagine Web. Questo possibile o sfruttando la proprietà TARGET del marcatore <A> dove si può specificare il nome della finestra creare, o sfruttando il metodo open dell’oggetto Window; quest’ultimo metodo dà accesso a un maggior numero di proprietà della finestra generata. <A HREF=”htt…..” TARGET=”MyNewWin”> …… </A> oppure (in JavaScript) objnewWin=window.open(“mypage.htm”,”MyWin”,”top=100,left=100,width=450,height=265,toolbar=no,menubar=no,location=no,dir ectories=no”); oppure (in VBscript) set objnewWin= wsetindow.open(“mypage.htm”, ”MyWin”,”top=100, left=100, width=450, height=265, toolbar=no, menubar=no, location=no, directories=no”); Attributo Valori descrizione channelmode Yes|no| 1 |0 Mostra i controlli canale Directories Yes|no| 1 |0 Include i pulsanti di directory Fullscreen Yes|no| 1 |0 Ingrandisce la nuova finestra Height Numero Altezza della finestra in pixel Width Numero Larghezza della finestra in pixel Left Numero Posizione sinistra in pixel sul desktop Top Numero Posizione superiore in pixel sul desktop Location Yes|no| 1 |0 L’url della casella di testo address Menubar Yes|no| 1 |0 I menu predefiniti del browser Resizable Yes|no| 1 |0 La finestra può essere ridimensionata dall’utente Scrollbars Yes|no| 1 |0 Barre di scorrimento orizzontale e verticale Status Yes|no| 1 |0 La barra di Stato predefinita Toolbar Yes|no| 1 |0 Include la toolbar del browser 5.5.1) Finestre modali È possibile aprire una nuova finestra anche utilizzando il metodo showModalDialog. Questa è una finestra modale: l’utente non può attivare la finestra originale fino a quando non chiude quella modale. objnewWin=window.showModalDialog(“mypage.htm”,”MyDialog”,”dialogWidth=450px;dialogHeight=265px;scrollbars=no; center=yes; border=thin; help=no; status=no”); (si potrebbero usare anche i : al posto dell’uguale) Attributo Valori descrizione Border Thin|thick Dimensione del bordo attorno alla finestra Center Yes|no| 1 |0 Centra la finestra nel browser dialogHeight Numero+unità Altezza della finestra in pixel dialogWidth Numero+unità Larghezza della finestra in pixel dialogLeft Numero + unità Posizione sinistra in pixel sul desktop dialogTop Numero+ unità Posizione superiore in pixel sul desktop Font Stringa CSS Font e stili predefiniti per la finestra Font-family Stringa CSS Famiglia di font predefinita per la finestra Font-size Stringa CSS Dimensione di font predefinita dalla finestra Font-style Stringa CSS Stile di font predefinito per la finestra Font-variant Stringa CSS Variante di font definito per la finestra Font-weight Stringa CSS Larghezza di font predefinita per la finestra Help Yes|no| 1 |0 Include il pulsante di aiuto nella barra del titolo Maximize Yes|no| 1 |0 Include il pulsante maximize nella barra del titolo Minimize Yes|no| 1 |0 Include il pulsante minimize nella barra del titolo 23