b'\n_START_ARTICLE_\nJavaScript\n_START_SECTION_\nJava, JavaScript e JScript\n_START_PARAGRAPH_\nIl cambio di nome da LiveScript a JavaScript si ebbe pi\xc3\xb9 o meno nel periodo in cui Netscape stava includendo il supporto per la tecnologia Java nel suo browser Netscape Navigator. La scelta del nome si rivel\xc3\xb2 fonte di grande confusione. Non c\'\xc3\xa8 una vera relazione tra Java e JavaScript; le loro somiglianze sono soprattutto nella sintassi (derivata in entrambi i casi dal linguaggio C); le loro semantiche sono piuttosto diverse, e in particolare i loro object model non hanno relazione e sono ampiamente incompatibili._NEWLINE_Dato il successo di JavaScript come linguaggio per arricchire le pagine web, Microsoft svilupp\xc3\xb2 un linguaggio compatibile, conosciuto come JScript. La necessit\xc3\xa0 di specifiche comuni fu alla base dello standard ECMA 262 per ECMAScript, di cui sono state pubblicate otto edizioni da quando il lavoro inizi\xc3\xb2, nel novembre 1996.\n_START_SECTION_\nUsi frequenti nei web browser\n_START_PARAGRAPH_\nJavaScript pu\xc3\xb2 essere usato per ogni aspetto dello scripting lato client di un web browser, ma alcuni usi si sono diffusi pi\xc3\xb9 di altri. Tra gli esempi ricorrenti vi sono il rimpiazzo delle immagini, la creazione di finestre pop-up,  la validazione dei dati inseriti nelle form._NEWLINE_Nella maggior parte dei browser, il seguente frammento di codice XHTML mostra un modo con cui un\'immagine pu\xc3\xb2 essere scambiata con un\'altra quando l\'utente muove il cursore su di essa (\xc3\xa8 chiamato spesso effetto rollover o mouse over). Comunque comportamenti simili possono essere ottenuti anche usando solo i CSS._NEWLINE_ <img src = "normal.png"_NEWLINE_      onclick = "window.location.href=\'http://en.wikipedia.org/\'"_NEWLINE_      onmouseover = "this.src=\'rollover.png\'"_NEWLINE_      onmouseout  = "this.src=\'normal.png\'" />\n_START_SECTION_\nFiliazioni\n_START_PARAGRAPH_\nUn nuovo esempio di uso di JavaScript sono i Bookmarklet, piccole sezioni di codice all\'interno dei segnalibri o Preferiti dei browser web._NEWLINE_Il linguaggio di programmazione usato in Macromedia Flash (chiamato ActionScript) ha una forte somiglianza con JavaScript, dovuta alla loro relazione condivisa con ECMAScript. ActionScript ha quasi la stessa sintassi di JavaScript, ma il modello a oggetti \xc3\xa8 decisamente diverso._NEWLINE_JavaScript for OSA (JavaScript OSA, or JSOSA), \xc3\xa8 un linguaggio di scripting per Macintosh basato sull\'implementazione JavaScript 1.5 di Mozilla. \xc3\x88 un componente freeware reso disponibile da Late Night Software. L\'interazione con il sistema operativo e con le applicazioni di terze parti \xc3\xa8 gestita tramite un oggetto MacOS. A parte ci\xc3\xb2, il linguaggio \xc3\xa8 virtualmente identico all\'implementazione Mozilla. \xc3\x88 stato proposto come alternativa al pi\xc3\xb9 usato linguaggio AppleScript.\n_START_SECTION_\nIncompatibilit\xc3\xa0\n_START_PARAGRAPH_\nLe varie implementazioni di JavaScript, come gi\xc3\xa0 accaduto per l\'HTML, spesso non sono conformi agli standard, ma piuttosto sono costruite per funzionare con uno specifico browser web._NEWLINE_L\'attuale standard ECMAScript dovrebbe essere teoricamente la base di tutte le implementazioni JavaScript, ma in pratica i browser Mozilla (e Netscape) usano JavaScript, Microsoft Internet Explorer usa JScript,  e altri browser come Opera e Safari usano altre implementazioni ECMAScript, spesso con ulteriori caratteristiche non standard per permettere la compatibilit\xc3\xa0 con JavaScript e JScript._NEWLINE_JavaScript e JScript contengono molte caratteristiche che non sono parte dello standard ufficiale ECMAScript, e possono anche essere privi di diverse caratteristiche. In tal modo, sono in parte incompatibili, il che porta gli autori di script a sopperire a tali problemi. Tra i due, JavaScript \xc3\xa8 pi\xc3\xb9 conforme allo standard: ci\xc3\xb2 significa che uno script redatto secondo gli standard ECMA funzioner\xc3\xa0 con la maggior parte dei browser, tranne Internet Explorer._NEWLINE_Un altro effetto \xc3\xa8 che ciascun browser potrebbe trattare lo stesso script in modo diverso, e ci\xc3\xb2 che funziona in un browser potrebbe non funzionare in un altro browser, o persino in una diversa versione dello stesso browser. Come con l\'HTML, \xc3\xa8 quindi raccomandabile scrivere codice conforme agli standard.\n_START_SECTION_\nContromisure\n_START_PARAGRAPH_\nCi sono due tecniche principali per gestire le incompatibilit\xc3\xa0: browser sniffing (lett. "annusare il browser") e object detection (rilevazione dell\'oggetto). Quando c\'erano solo due browser che supportavano lo scripting (Netscape e Internet Explorer), il browser sniffing era la tecnica pi\xc3\xb9 diffusa. Controllando un certo numero di propriet\xc3\xa0 del client, che restituivano informazioni su piattaforma, browser e versione, era possibile per il codice discernere esattamente in quale browser veniva eseguito. Pi\xc3\xb9 tardi, le tecniche di sniffing divennero pi\xc3\xb9 difficili da implementare, dato che Internet Explorer cominci\xc3\xb2 a "dissimulare" le sue informazioni sul client, per esempio fornendo informazioni sul browser sempre pi\xc3\xb9 inaccurate (i motivi per questo comportamento della Microsoft sono da tempo oggetto di disputa). Pi\xc3\xb9 tardi ancora, il browser sniffing divenne una sorta di complicata forma d\'arte, quando cio\xc3\xa8 altri browser dotati di scripting entrarono nel mercato, ciascuno con proprie informazioni su piattaforma, client e versione._NEWLINE_L\'object detection si basa sul controllare l\'esistenza della propriet\xc3\xa0 di un oggetto._NEWLINE_function set_image_source(imageName, imageURL){_NEWLINE_  // Test per verificare se l\'oggetto \'document\' ha una propriet\xc3\xa0 \'images\'_NEWLINE_  if (document.images)_NEWLINE_  {_NEWLINE_    // eseguito solo se esiste un vettore \'images\'_NEWLINE_    document.images[ imageName ].src = imageURL;_NEWLINE_  }}_NEWLINE_Un esempio pi\xc3\xb9 complesso si basa sull\'uso di test booleani collegati:_NEWLINE_if (document.body && document.body.style)_NEWLINE_In questo caso, l\'espressione "document.body.style" normalmente causerebbe un errore in un browser che non ha la propriet\xc3\xa0 "document.body", ma l\'uso dell\'operatore "&&" assicura che "document.body.style" non venga mai chiamato se "document.body" non esiste. Il test sfrutta questa particolarit\xc3\xa0 della valutazione di espressioni logiche, chiamata lazy evaluation (lett. "valutazione pigra")._NEWLINE_Oggi, una combinazione di browser sniffing, object detection, e conformit\xc3\xa0 agli standard come le specifiche ECMAScript e i CSS sono usati in varie proporzioni per provare ad assicurare che un utente non incontri mai un errore JavaScript.\n_START_SECTION_\nTag script (HTML)\n_START_PARAGRAPH_\nPer inserire uno script in una pagina HTML, \xc3\xa8 necessario l\'utilizzo del tag script. Questo tag non \xc3\xa8 parte del linguaggio JavaScript in s\xc3\xa9, serve solo come "contenitore" all\'interno di una pagina HTML._NEWLINE_<script type="text/javascript">// <![CDATA[JavaScript statements...// ]]></script>_NEWLINE_Un documento pu\xc3\xb2 presentare in pi\xc3\xb9 parti la definizione del tag script. Tramite questo tag si pu\xc3\xb2 rappresentare la versione utilizzata ed a seconda del browser si avr\xc3\xa0 l\'interpretazione della parte di codice appropriata. Le definizioni possono essere le seguenti:_NEWLINE_<script type="text/javascript"> ... </script>\n_START_SECTION_\nHello, world!\n_START_PARAGRAPH_\nIl seguente esempio visualizza un messaggio di avviso con all\'interno scritto "Hello world"._NEWLINE_<script type="text/javascript">_NEWLINE_   alert(\'Hello world\');</script>_NEWLINE_Per "scrivere" direttamente nella pagina HTML:_NEWLINE_<script type="text/javascript">_NEWLINE_   document.write(\'Hello world\');</script>_NEWLINE_Il tipo MIME per il codice sorgente JavaScript source code \xc3\xa8 application/javascript, ma \xc3\xa8 pi\xc3\xb9 usato text/javascript, anche se non standard._NEWLINE_Per integrare del codice JavaScript in un documento HTML, bisogna farlo precedere da:_NEWLINE_<script type="text/javascript">_NEWLINE_e seguire da:_NEWLINE_</script>_NEWLINE_Browser pi\xc3\xb9 vecchi tipicamente richiedono che il codice inizi con:_NEWLINE_  <script language="JavaScript" type="text/javascript">_NEWLINE_  <!--_NEWLINE_e finisca con:_NEWLINE_  // -->_NEWLINE_  </script>_NEWLINE_I segnalatori di commento <!-- ... --> sono necessari per assicurare che il codice non venga visualizzato come testo da browser molto vecchi che non riconoscono il tag <script> nei documenti HTML, mentre LANGUAGE \xc3\xa8 un attributo HTML (il cui uso \xc3\xa8 ormai sconsigliato) che pu\xc3\xb2 essere richiesto da vecchi browser. Comunque, i tag <script> nei documenti XHTML/XML non funzionano se commentati, dato che i parser conformi agli standard XHTML/XML ignorano i commenti e possono anche incontrare problemi con i simboli --, < e > negli script (per esempio, confondendoli con gli operatori di decremento degli interi e di confronto). I documenti XHTML dovrebbero quindi includere gli script come sezioni CDATA dell\'XML, facendoli precedere da_NEWLINE_  <script type="text/javascript">_NEWLINE_  //<![CDATA[_NEWLINE_e facendoli seguire da_NEWLINE_  //]]>_NEWLINE_  </script>_NEWLINE_(I simboli \'//\' all\'inizio di una linea segnalano l\'inizio di un commento JavaScript, per impedire che <![CDATA[ e ]]> vengano analizzati dallo script.)_NEWLINE_Gli elementi HTML  possono contenere eventi intrinseci che possono essere associati a gestori specificati da uno script. Per scrivere del codice HTML 4.01 valido, il server web dovrebbe restituire un \'Content-Script-Type\' con valore \'text/JavaScript\'. Se il server web non pu\xc3\xb2 essere configurato a tale scopo, l\'autore del sito web pu\xc3\xb2 inserire la seguente dichiarazione nella sezione di intestazione del documento_NEWLINE_<meta http-equiv="Content-Script-Type" content="text/javascript" />\n_START_SECTION_\nVariabili\n_START_PARAGRAPH_\nLe variabili sono in genere tipizzate dinamicamente ovvero sono definite semplicemente assegnando loro un valore oppure usando il comando var; quelle dichiarate fuori da qualunque funzione sono in visibilit\xc3\xa0 "globale" ovvero accessibili dall\'intera pagina web; quelle dichiarate dentro una funzione sono invece locali ovvero interne per quella funzione._NEWLINE_Per passare variabili da una pagina all\'altra, uno sviluppatore pu\xc3\xb2 impostare un cookie o usare un frame nascosto o una finestra in background per memorizzarli.\n_START_SECTION_\nOggetti\n_START_PARAGRAPH_\nOgni cosa in JavaScript \xc3\xa8 o un valore primitivo o un oggetto. Gli oggetti sono entit\xc3\xa0 dotate di unicit\xc3\xa0 (sono uguali solo a s\xc3\xa9 stessi) e che associano nomi di propriet\xc3\xa0 a valori._NEWLINE_Ci\xc3\xb2 significa che un oggetto \xc3\xa8 un vettore associativo simile agli hash in Perl e Ruby, o ai dizionari in Python, PostScript e Smalltalk._NEWLINE_JavaScript ha diversi generi di oggetti predefiniti, in particolare Array, Boolean (booleani), Date (oggetti contenenti una data e un\'ora), Function (funzioni), Math (oggetto contenente funzioni di uso nel calcolo matematico), Number (numeri), Object (oggetti), RegExp (espressioni regolari) e String (stringhe). Altri oggetti sono gli "oggetti ospiti",  definiti non dal linguaggio ma dall\'ambiente di esecuzione. In un browser, i tipici oggetti ospite appartengono al DOM: window (finestra), form (maschera), link (collegamento) ecc._NEWLINE_Definendo un costruttore, \xc3\xa8 possibile definire oggetti. JavaScript \xc3\xa8 un linguaggio orientato a oggetti basato su prototipi. Ci\xc3\xb2 significa che l\'eredit\xc3\xa0 \xc3\xa8 fra oggetti, non fra classi (JavaScript non ha classi). Gli oggetti ereditano le propriet\xc3\xa0 dai loro prototipi._NEWLINE_Si possono aggiungere ulteriori propriet\xc3\xa0 o metodi ai singoli oggetti dopo che sono stati creati. Per far questo per tutte le istanze create da un singolo costruttore, si pu\xc3\xb2 usare la propriet\xc3\xa0 prototype del costruttore per accedere all\'oggetto prototipo._NEWLINE_Esempio: Creazione di un oggetto_NEWLINE_// costruttorefunction MyObject(attributeA, attributeB){_NEWLINE_  this.attributeA = attributeA_NEWLINE_  this.attributeB = attributeB}_NEWLINE_ _NEWLINE_// crea un Oggettoobj = new MyObject(\'red\', 1000)_NEWLINE_ _NEWLINE_// accede ad un attributo di objalert(obj.attributeA)_NEWLINE_ _NEWLINE_// accede ad un attributo con la notazione del vettore associativoalert(obj["attributeA"])\n_START_SECTION_\nSimulare l\'ereditariet\xc3\xa0\n_START_PARAGRAPH_\nLa gerarchia degli oggetti in JavaScript pu\xc3\xb2 essere emulata. Per esempio:_NEWLINE_function Base(){_NEWLINE_  this.Override = _Override;_NEWLINE_  this.BaseFunction = _BaseFunction;_NEWLINE_ _NEWLINE_  function _Override()_NEWLINE_  {_NEWLINE_    alert("Base::Override()");_NEWLINE_  }_NEWLINE__NEWLINE_  function _BaseFunction()_NEWLINE_  {_NEWLINE_    alert("Base::BaseFunction()");_NEWLINE_  }}_NEWLINE_ _NEWLINE_function Derive(){_NEWLINE_   this.Override = _Override;_NEWLINE_   function _Override()_NEWLINE_   {_NEWLINE_     alert("Derive::Override()");_NEWLINE_   }}Derive.prototype = new Base();_NEWLINE_ _NEWLINE_d = new Derive();d.Override();d.BaseFunction();_NEWLINE_risulter\xc3\xa0 nell\'output:_NEWLINE_Derive::Override()_NEWLINE_Base::BaseFunction()\n_START_SECTION_\nArray\n_START_PARAGRAPH_\nUn array \xc3\xa8 un\'associazione tra interi e valori di tipo arbitrario. In JavaScript, tutti gli oggetti possono associare interi e valori, ma gli array sono un tipo speciale di oggetti che hanno dei comportamenti specifici e metodi specializzati per l\'uso degli indici interi (per es., join, slice, e push)._NEWLINE_Gli array hanno una propriet\xc3\xa0 length che \xc3\xa8 garantita essere sempre maggiore dell\'indice pi\xc3\xb9 grande usato nel vettore. \xc3\x88 automaticamente aggiornata se si crea una propriet\xc3\xa0 con un indice ancora maggiore. Scrivere un numero pi\xc3\xb9 piccolo nella propriet\xc3\xa0 length rimuove gli indici pi\xc3\xb9 grandi. Questa propriet\xc3\xa0 \xc3\xa8 l\'unica caratteristica speciale dei vettori, che li distingue dagli altri oggetti._NEWLINE_Con gli elementi degli array si pu\xc3\xb2 utilizzare la normale notazione per accedere alle propriet\xc3\xa0 degli oggetti:_NEWLINE_  myArray[1]_NEWLINE_  myArray["1"]_NEWLINE_Queste due notazioni sono equivalenti. Non \xc3\xa8 possibile usare la notazione a punto o le stringhe con una rappresentazione alternativa del numero:_NEWLINE_  myArray.1 (errore di sintassi)_NEWLINE_  myArray(1) (sintassi errata, ammessa unicamente da Internet Explorer)_NEWLINE_  myArray["01"] (non \xc3\xa8 lo stesso di myArray[1])_NEWLINE_La dichiarazione di un vettore pu\xc3\xb2 usare o una notazione esplicita o il costruttore Array:_NEWLINE_ myArray = [0,1,,,4,5]; (vettore di lunghezza 6 con 4 elementi)_NEWLINE_ myArray = new Array(0,1,2,3,4,5); (vettore con lunghezza 6 e 6 elementi)_NEWLINE_ myArray = new Array(365); (vettore vuoto con lunghezza 365)_NEWLINE_Gli Array sono implementati in modo che solo gli elementi definiti usino memoria; sono "vettori sparsi". Impostare myArray[10] = \'qualcosa\' e myArray[57] = \'qualcosaltro\' usa solo lo spazio per questi due elementi, come per ogni altro oggetto. La lunghezza dell\'array verr\xc3\xa0 sempre riportata come 58.\n_START_SECTION_\nif ... else\n_START_PARAGRAPH_\nLa struttura di controllo IF corrisponde in italiano a SE_NEWLINE_L\'istruzione contenuta all\'interno delle parentesi graffe verr\xc3\xa0 eseguita solo e soltanto se la condizione restituisce il valore true (vero),altrimenti verr\xc3\xa0 eseguita l\'istruzione contenuta nell\'ELSE._NEWLINE_  if (condizione)_NEWLINE_  {_NEWLINE_     istruzioni;_NEWLINE_  }_NEWLINE_  if (condizione)_NEWLINE_  {_NEWLINE_     istruzioni;_NEWLINE_  }_NEWLINE_  else_NEWLINE_  {_NEWLINE_     istruzioni;_NEWLINE_  }\n_START_SECTION_\nCiclo while\n_START_PARAGRAPH_\nwhile (condizione)_NEWLINE_  {_NEWLINE_     istruzioni;_NEWLINE_  }\n_START_SECTION_\nCiclo do ... while\n_START_PARAGRAPH_\ndo_NEWLINE_  {_NEWLINE_     istruzioni;_NEWLINE_  } while (condizione);\n_START_SECTION_\nCiclo for\n_START_PARAGRAPH_\nfor ([espressione iniziale]; [condizione]; [espressione di incremento])_NEWLINE_  {_NEWLINE_     istruzioni;_NEWLINE_  }\n_START_SECTION_\nCiclo for ... in\n_START_PARAGRAPH_\nQuesto ciclo percorre tutte le propriet\xc3\xa0 di un oggetto (o gli elementi di un vettore)._NEWLINE_  for (variabile in oggetto)_NEWLINE_  {_NEWLINE_     istruzioni;_NEWLINE_  }\n_START_SECTION_\nIstruzione switch\n_START_PARAGRAPH_\nswitch (espressione)_NEWLINE_  {_NEWLINE_     case valore1:_NEWLINE_        istruzioni;_NEWLINE_        break;_NEWLINE_     case valore2:_NEWLINE_        istruzioni;_NEWLINE_        break;_NEWLINE_     default\xc2\xa0:_NEWLINE_        istruzioni;_NEWLINE_  }\n_START_SECTION_\nFunzioni\n_START_PARAGRAPH_\nUna funzione \xc3\xa8 un blocco di istruzioni, dotato di una lista di argomenti (eventualmente vuota) e che pu\xc3\xb2 avere un nome (anche se non \xc3\xa8 necessario). Una funzione pu\xc3\xb2 restituire un valore tramite l\'istruzione return._NEWLINE_  function(pu\xc3\xb2 essere vuoto)_NEWLINE_  {_NEWLINE_     istruzioni;_NEWLINE_     return espressione;_NEWLINE_  }_NEWLINE_Il numero degli argomenti passati quando si chiama una funzione non deve necessariamente essere uguale al numero degli argomenti della definizione della funzione (in altre parole, il numero di parametri formali non deve necessariamente essere rispettato all\'atto dell\'invocazione della funzione cio\xc3\xa8 nella specifica dei parametri attuali). All\'interno della funzione ci si pu\xc3\xb2 riferire alla lista degli argomenti anche tramite il vettore arguments (quest\'ultimo possiede la propriet\xc3\xa0 callee rappresentante un puntatore alla funzione stessa)._NEWLINE_Ogni funzione \xc3\xa8 un\'istanza di Function, un tipo di oggetto base. Le funzioni possono essere create e assegnate come ogni altro oggetto:_NEWLINE_   var myFunc1 = new Function("alert(\'Hello\')");_NEWLINE_   var myFunc2 = myFunc1;_NEWLINE_   myFunc2();_NEWLINE_produce come output:_NEWLINE_   Hello\n_START_SECTION_\nMetodi di scrittura a video (Standard Output)\n_START_PARAGRAPH_\nPer scrivere a video (cio\xc3\xa8 nella pagina in cui si trova lo script) \xc3\xa8 possibile utilizzare il metodo document.write(); le stringhe da visualizzare possono essere concatenate utilizzando l\'operatore di concatenazione \'+\':_NEWLINE_<html><head><script type="text/javascript"><!-- Nasconde lo script ai browser obsoleti// Questa funzione genera una riga orizzontale della larghezza scelta.function bar(widthPct){_NEWLINE_  document.write("<hr align=\'left\' width=\'" + widthPct + "%\' />");}// Questa funzione genera del testo preceduto da un titolo di dato livello.function output(headLevel, headText, text){_NEWLINE_  document.write("<h" + headLevel + ">" + headText + "</h" + headLevel + "><p>" + text + "</p>");}// Fine del codice da nascondere --></script></head><body><script type="text/javascript"><!-- Nasconde lo script ai browser obsoletibar(25)output(2, "JavaScript Rules!", "Usare JavaScript \xc3\xa8 facile...")// Fine del codice da nascondere --></script><p>Questo \xc3\xa8 normale HTML, a differenza di quello generato dal codice sopra.</p></body></html>\n_START_SECTION_\nTag di applicazione\n_START_PARAGRAPH_\nA, ADDRESS, APPLET, AREA, B, BDO, BIG, BLOCKQUOTE, BODY, BUTTON, CAPTION, CENTER, CITE, CODE, DD, DFN, DIR, DIV, DL, DT, EM, EMBED, FIELDSET, FONT, FORM, HR, I, IMG, INPUT type=button, INPUT type=checkbox, INPUT type=file, INPUT type=image, INPUT type=password, INPUT type=radio, INPUT type=reset, INPUT type=submit, INPUT type=text, KBD, LABEL, LEGEND, LI, LISTING, MAP, MARQUEE, MENU, NEXTID, NOBR, OBJECT, OL, P, PLAINTEXT, PRE, RT, RUBY, S, SAMP, SELECT, SMALL, SPAN, STRIKE, STRONG, SUB, SUP, TABLE, TBODY, TD, TEXTAREA, TFOOT, TH, THEAD, TR, TT, U, UL, VAR, XMP\n_START_SECTION_\nTag di applicazione\n_START_PARAGRAPH_\nA, ADDRESS, APPLET, AREA, B, BDO, BIG, BLOCKQUOTE, BODY, BUTTON, CAPTION, CENTER, CITE, CODE, DD, DFN, DIR, DIV, DL, DT, EM, EMBED, FIELDSET, FONT, FORM, HR, I, IMG, INPUT type=button, INPUT type=checkbox, INPUT type=file, INPUT type=image, INPUT type=password, INPUT type=radio, INPUT type=reset, INPUT type=submit, INPUT type=text, KBD, LABEL, LEGEND, LI, LISTING, MAP, MARQUEE, MENU, NEXTID, NOBR, OBJECT, OL, P, PLAINTEXT, PRE, RT, RUBY, S, SAMP, SELECT, SMALL, SPAN, STRIKE, STRONG, SUB, SUP, TABLE, TBODY, TD, TEXTAREA, TFOOT, TH, THEAD, TR, TT, U, UL, VAR, XMP\n_START_SECTION_\nTag di applicazione\n_START_PARAGRAPH_\nA, ADDRESS, APPLET, AREA, B, BDO, BIG, BLOCKQUOTE, BODY, BUTTON, CAPTION, CENTER, CITE, CODE, DD, DFN, DIR, DIV, DL, DT, EM, EMBED, FIELDSET, FONT, FORM, HR, I, IMG, INPUT type=button, INPUT type=checkbox, INPUT type=file, INPUT type=image, INPUT type=password, INPUT type=radio, INPUT type=reset, INPUT type=submit, INPUT type=text, KBD, LABEL, LEGEND, LI, LISTING, MAP, MARQUEE, MENU, NEXTID, NOBR, OBJECT, OL, P, PLAINTEXT, PRE, RT, RUBY, S, SAMP, SELECT, SMALL, SPAN, STRIKE, STRONG, SUB, SUP, TABLE, TBODY, TD, TEXTAREA, TFOOT, TH, THEAD, TR, TT, U, UL, VAR, XMP\n_START_SECTION_\nonChange\n_START_PARAGRAPH_\nAttivato quando il contenuto di un campo di un form o modulo \xc3\xa8 modificato o non \xc3\xa8 pi\xc3\xb9 selezionato. Viene utilizzato anche con gli oggetti FileUpload, Select, Text, TextArea._NEWLINE_Esempio:_NEWLINE_<input type="text" value="Enter email address" name="userEmail" onChange=validateInput(this.value) /><script type="text/javascript">_NEWLINE_  this.myForm.userEmail.focus();_NEWLINE_  this.myForm.userEmail.select();_NEWLINE_ _NEWLINE_  function validateInput()_NEWLINE_  {_NEWLINE_    userInput = new String();_NEWLINE_    userInput = this.myForm.userEmail.value;_NEWLINE_    if (userInput.match("@"))_NEWLINE_      alert("Thanks for your interest.");_NEWLINE_    else_NEWLINE_      alert("Please check your email details are correct before submitting");_NEWLINE_  }</script>\n_START_SECTION_\nonCellChange\n_START_PARAGRAPH_\nAttivato quando si modifica un elemento in un Database, per questa sua caratteristica ha un uso non propriamente legato a JavaScript;\n_START_SECTION_\nonPropertyChange\n_START_PARAGRAPH_\nEvento attivato quando cambia la propriet\xc3\xa0 di un elemento;\n_START_SECTION_\nonReadyStateChange\n_START_PARAGRAPH_\nEvento attivato quando lo stato del caricamento di un elemento cambia, l\'evento \xc3\xa8 utile, ad esempio, per verificare che un elemento sia stato caricato.\n_START_SECTION_\nTag di applicazione\n_START_PARAGRAPH_\nA, ADDRESS, APPLET, AREA, B, BDO, BIG, BLOCKQUOTE, BODY, BUTTON, CAPTION, CENTER, CITE, CODE, DD, DFN, DIR, DIV, DL, DT, EM, EMBED, FIELDSET, FONT, FORM, HR, I, IMG, INPUT type=button, INPUT type=checkbox, INPUT type=file, INPUT type=image, INPUT type=password, INPUT type=radio, INPUT type=reset, INPUT type=submit, INPUT type=text, KBD, LABEL, LEGEND, LI, LISTING, MAP, MARQUEE, MENU, NEXTID, NOBR, OBJECT, OL, P, PLAINTEXT, PRE, RT, RUBY, S, SAMP, SELECT, SMALL, SPAN, STRIKE, STRONG, SUB, SUP, TABLE, TBODY, TD, TEXTAREA, TFOOT, TH, THEAD, TR, TT, U, UL, VAR, XMP\n_START_SECTION_\nonFocus\n_START_PARAGRAPH_\nQuesto handler \xc3\xa8 l\'opposto di onBlur per cui si attiva quando l\'utente entra in un campo;\n_START_SECTION_\nonBlur\n_START_PARAGRAPH_\nViene attivato quando il puntatore del mouse o il cursore esce dalla finestra corrente utilizzando il mouse o il carattere TAB. Applicato ai moduli, invece, tale handler si avvia se si esce dal campo il cui tag contiene il controllo;_NEWLINE_Esempio_NEWLINE_Enter email address <input type="text" value="" name="userEmail" onBlur=addCheck()><script type="text/javascript">function addCheck(){_NEWLINE_  alert("Please check your email details are correct before submitting")}</script>\n_START_SECTION_\nonSelect\n_START_PARAGRAPH_\nAttivabile quando si seleziona del testo all\'interno di una casella di testo sia col mouse sia tenendo premuto SHIFT e selezionando con i tasti Freccia;\n_START_SECTION_\nonSelectStart\n_START_PARAGRAPH_\nSi attiva quando si inizia a selezionare un evento;\n_START_SECTION_\nonbeforeEditFocus\n_START_PARAGRAPH_\nSi attiva con un doppio click o con un click su un oggetto che ha gi\xc3\xa0 la selezione, quando questo \xc3\xa8 in DesignMode;\n_START_SECTION_\nonLoseCapture\n_START_PARAGRAPH_\nSi attiva quando un oggetto perde la cattura del mouse.\n_START_SECTION_\nTag di applicazione\n_START_PARAGRAPH_\nA, ADDRESS, APPLET, AREA, B, BDO, BIG, BLOCKQUOTE, BODY, BUTTON, CAPTION, CENTER, CITE, CODE, DD, DFN, DIR, DIV, DL, DT, EM, EMBED, FIELDSET, FONT, FORM, HR, I, IMG, INPUT type=button, INPUT type=checkbox, INPUT type=file, INPUT type=image, INPUT type=password, INPUT type=radio, INPUT type=reset, INPUT type=submit, INPUT type=text, KBD, LABEL, LEGEND, LI, LISTING, MAP, MARQUEE, MENU, NEXTID, NOBR, OBJECT, OL, P, PLAINTEXT, PRE, RT, RUBY, S, SAMP, SELECT, SMALL, SPAN, STRIKE, STRONG, SUB, SUP, TABLE, TBODY, TD, TEXTAREA, TFOOT, TH, THEAD, TR, TT, U, UL, VAR, XMP\n_START_SECTION_\nonLoad\n_START_PARAGRAPH_\nQuesto handler funziona nel caricamento di oggetti, per lo pi\xc3\xb9 finestre e immagini;\n_START_SECTION_\nonUnload\n_START_PARAGRAPH_\n\xc3\x88 l\'opposto del precedente e funziona quando si lascia una finestra per caricarne un\'altra o anche per ricaricare la stessa (col tasto refresh);\n_START_SECTION_\nonAbort\n_START_PARAGRAPH_\nL\'Handler dell\'evento onAbort permette di specificare del codice nel caso in cui l\'utente blocchi il caricamento di un oggetto, o che si blocchi il caricamento di un\'immagine._NEWLINE_Questo handler usa le seguenti propriet\xc3\xa0 dell\'evento._NEWLINE_Esempio_NEWLINE_  <img name = "myPic" SRC = "images/myPic.gif" onAbort = "alert(\'Loading of image aborted!\')">\n_START_SECTION_\nonError\n_START_PARAGRAPH_\nSi attiva quando il caricamento di un oggetto causa un errore, ma solo se questo \xc3\xa8 dovuto ad un errore di sintassi del codice e non del browser cos\xc3\xac funziona su un link errato di un\'immagine della pagina, ma non su un link errato di caricamento di una pagina intera. Opera non gestisce questo evento, ormai obsoleto: per una corretta gestione degli errori si utilizza il costrutto try ... catch;\n_START_SECTION_\nonBeforeUnload\n_START_PARAGRAPH_\nQuesto handler funziona allo stesso modo di onUnload ma si carica in un momento prima;\n_START_SECTION_\nonStop\n_START_PARAGRAPH_\nQuesto handler funziona quando si ferma il caricamento della pagina con il tasto stop del browser e dovrebbe funzionare anche allo stesso modo di onUnload caricandosi prima di questo ma dopo onBeforeUnload.\n_START_SECTION_\nTag di applicazione\n_START_PARAGRAPH_\nA, ADDRESS, APPLET, B, BIG, BLOCKQUOTE, BUTTON, CENTER, CITE, CODE, custom, DD, DFN, DIR, DIV, DL, DT, EM, EMBED, FIELDSET, FORM, FRAME, Hn, HR, I, IMG, INPUT type=button, INPUT type=file, INPUT type=image, INPUT type=password, INPUT type=reset, INPUT type=submit, INPUT type=text, ISINDEX, KBD, LABEL, LEGEND, LI, LISTING, MARQUEE, MENU, OBJECT, OL, P, PRE, S, SAMP, SELECT, SMALL, SPAN, STRIKE, STRONG, SUB, SUP, TABLE, TEXTAREA, TT, U, UL, VAR, window, XMP\n_START_SECTION_\nTag di applicazione\n_START_PARAGRAPH_\nHandler applicabile solamente all\'oggetto Form.\n_START_SECTION_\nGestione degli errori\n_START_PARAGRAPH_\nLe versioni pi\xc3\xb9 nuove di JavaScript (a partire da quelle usate in Internet Explorer 5 e Netscape 6) incorporano la possibilit\xc3\xa0 di un costrutto try... catch per la gestione degli errori._NEWLINE_Il costrutto try ... catch ... finally intercetta le eccezioni generate da un errore o da un\'istruzione throw. La sua sintassi \xc3\xa8 la seguente:_NEWLINE_try {_NEWLINE_   // Istruzioni in cui possono essere lanciate delle eccezioni} catch (error) {_NEWLINE_   // Istruzioni da eseguire in caso di eccezione} finally {_NEWLINE_   // Istruzioni da eseguire successivamente in entrambi i casi}_NEWLINE_Inizialmente, vengono eseguite le istruzioni all\'interno del blocco try. Se viene lanciata un\'eccezione, il flusso di controllo dello script viene passato immediatamente alle istruzioni del blocco catch, con l\'eccezione che viene resa disponibile come argomento error. In caso contrario, il blocco catch viene saltato. Una volta che il blocco catch \xc3\xa8 concluso, o il blocco try viene eseguito fino alla fine senza che sia lanciata alcuna eccezione, vengono eseguite le istruzioni nel blocco finally.'