A questo gruppo si possono ricondurre i seguenti eventi:
Gli ultimi due eventi sono nati come particolarità di Internet Explorer 5.0 e richiedono ulteriori conoscenze per poter essere adoperati.
Per le versioni più vecchie di Javascript ecco il quadro riepilogativo in rosso sono indicate le modifiche apportate nelle diverse versioni dei browser):
| Evento | Versione Javascript | NN2.0 | NN3.0 | NN4.0 | NN4.06 | IE3.0 | IE4.0 | IE5.0 |
|---|---|---|---|---|---|---|---|---|
| onLoad | 1.0 | * | * | * | * | * | * | * |
| onUnload | 1.0 | * | * | * | * | * | * | * |
| onAbort | 1.1 | * | * | * | * | * | ||
| onError | 1.1 | * | * | * | * | * | ||
| onBeforeUnload | DHTML | * | ||||||
| onStop | DHTML | * |
Altro limite è dato dai tag a cui l'evento può essere associato:
| Evento | Tag associati in Netscape e JScript |
|---|---|
| onLoad | Questo gestore è usato con i tag <body> e <frameset> e da Javascript 1.1anche con <img> mentre in Explorer occorre aggiungere anche i tag <script>, <link>, <embed>, <applet>. In Javascript 1.2, su Netscape, si aggiungeva anche il tag <layer> |
| onUnload | Questo gestore è usato con i tag <body> e <frameset>
anche in Internet Explorer |
| onAbort | Questo gestore è usato solo con il tag <img> anche in Internet Explorer |
| onError | Questo gestore è usato solo con il tag <img> e con Window mentre
in Internet Explorer anche con <object> e <style> |
| onBeforeUnload | Questo gestore è usato con i tag <body> anche in Internet Explorer |
| onStop | Questo gestore è usato con i tag <body> anche in Internet Explorer |
Sulla precedenza di questi eventi clicca qui per un esempio
Questo evento, se ben utilizzato potrebbe simulare un effetto streaming mediante caricamento di immagini (gif, png o jpeg). Supponiamo di avere a disposizione una serie di jpeg da animare. Con questo evento possiamo sincronizzare la visualizzazione delle varie figure alla fine del caricamento della precedente mediante uno script del genere:
<script type="text/javascript">
var whichImage = 0;
var maxImages = 5;
function changeAnimation(theImage)
{
++whichImage;
if (whichImage < maxImages) {
var imageName="numbers/number" + whichImage + ".jpg";
theImage.src = imageName;
}
else { whichImage = -1; }
}
</script>
<img id="changingAnimation" src="numbers/number0.jpg"
onLoad="changeAnimation(this)">
Naturalmente questo script funzionerebbe bene per immagini molto grandi, che richiedano almeno qualche decimo di secondo per il caricamento. In caso contrario non riusciremmo a cogliere le transizioni tra un'immagine e l'altra a causa dell'elevata velocità di caricamento.
Molto più spesso utilizziamo l'evento onLoad per essere sicuri di lanciare altri script solo al termine del caricamento della pagina:
<script type="text/javascript">
function pageLoaded()
{
// da fare alla fine del caricamento
}
windows.onload = pageLoaded;
</script>
Una particolare menzione merita l'evento onError per la sua grande utilità ma per lo scarso utilizzo che se ne fa. Questo evento può:
<img src="corrupt.gif" onError="null"><head>, diventa attivo per tutta la finestra e per tutti gli eventi di errore attivati dagli oggetti ivi contenuti<script>window.onerror=null</script>onError associato alla singola immagine o oggetto cattura l'evento per questa immagine o oggetto a discapito di quello generaleLo script citato nel terzo caso è questo:
<script> // handler window.onerror = myOnError; msgArray = new Array(); urlArray = new Array(); lnoArray = new Array(); function myOnError(msg, url, lno) { msgArray[msgArray.length] = msg; urlArray[urlArray.length] = url; lnoArray[lnoArray.length] = lno; return true; } function displayErrors() { win2 = window.open('','window2','scrollbars=yes'); win2.document.writeln('<strong>Error Report</strong> <p>'); for (var i=0; i < msgArray.length; i++) { win2.document.writeln('<strong>Error in file:</strong> ' + urlArray[i] + '<br /> '); win2.document.writeln('<strong>Line number:</strong> ' + lnoArray[i] + '<br />'); win2.document.writeln('<strong>Message:</strong> ' + msgArray[i] + '</p>'); } win2.document.close(); } </script> <form> <!--bottone con l'errore--> <input type="button" value="Questo bottone ha un errore di sintassi" onClick="alert('unterminated string)" name="button" /> <br /> <input type="button" value="Visualizza l'errore" onClick="displayErrors()" name="button2" /> </form>
I dati forniti da onError vengono memorizzati in tre variabili standard, che abbiamo intercettato attraverso la firma dell'handler (i tre parametri della funzione):
| Variabile | Descrizione |
|---|---|
msg | Il messaggio di errore che indica il tipo di eccezione sollevata |
url | L'indirizzo della pagina in cui si è verificato l'errore |
lno | Numero di linea del codice difettoso |
Vediamo in pratica l'esempio:
Questo sistema funziona solo con Firefox e Internet Explorer, sugli altri browser possiamo utilizzare comunque onError come sistema semplice per intercettare le eccezioni.
Per lavorare un po' più di fino, possiamo utilizzare invece il costrutto try-catch-finally, ecco un semplice esempio:
<script type="text/javascript">
<!--
try
{
document.write(10/0) ;
}
catch(e)
{
alert(e.message);
}
finally
{
document.write("questo codice viene eseguito comunque.");
}
-->
</script>
PhantomJS, headless browser per test con JavascriptIl tool ideale per realizzare, da terminale, operazioni in remoto su... |
Creare e leggere QR Code in JavaScriptApplicazioni 'QR Code enabled' per il Web e per il mobile,... |
Jquery UI Map: web-mapping con Google Maps e jQueryUn plugin di jQuery UI per intefacciare applicaizoni Web/mobile con... |
Scrollorama e Scrolldeck, slideshow d'effetto con jQueryPlugin jQuery per ottenere Slideshow con diversi effetti di scrolling |
jCanvas, un primo semplice graficoAlla scoperta della libreria jCanvas, per semplificare il disegno e... |
Guida Node.jsIl framework che permette di per usare V8, l'interprete JavaScript... |
Canvas, guida ai frameworkCanvas, tra gli elementi di HTML5 è forse quello di maggior impatto.... |
Guida Javascript: tecniche avanzateUna guida dal taglio pratico per approfondire la programmazione a... |
Ogni martedì, direttamente nella tua e-mail: guide, articoli, script, novità e approfondimenti tecnici su JavaScript.
Iscriviti alla newsletter
|
|
Corso Webmaster base18 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso JQuery e Ajax per Webmaster03 Luglio 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |
|
|
Corso Webmaster base11 Giugno 2012 a Roma |