From 30feb96f6084a2fb976a24ac01c1f4a054611b62 Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Thu, 11 Feb 2021 14:47:54 +0100 Subject: unslug it: move --- .../control_flow_and_error_handling/index.html | 461 +++++++++++++ .../guide/details_of_the_object_model/index.html | 727 +++++++++++++++++++++ files/it/web/javascript/guide/functions/index.html | 646 ++++++++++++++++++ .../javascript/guide/grammar_and_types/index.html | 659 +++++++++++++++++++ files/it/web/javascript/guide/index.html | 124 ++++ .../web/javascript/guide/introduction/index.html | 140 ++++ .../guide/iterators_and_generators/index.html | 162 +++++ .../guide/loops_and_iteration/index.html | 340 ++++++++++ .../guide/regular_expressions/index.html | 647 ++++++++++++++++++ 9 files changed, 3906 insertions(+) create mode 100644 files/it/web/javascript/guide/control_flow_and_error_handling/index.html create mode 100644 files/it/web/javascript/guide/details_of_the_object_model/index.html create mode 100644 files/it/web/javascript/guide/functions/index.html create mode 100644 files/it/web/javascript/guide/grammar_and_types/index.html create mode 100644 files/it/web/javascript/guide/index.html create mode 100644 files/it/web/javascript/guide/introduction/index.html create mode 100644 files/it/web/javascript/guide/iterators_and_generators/index.html create mode 100644 files/it/web/javascript/guide/loops_and_iteration/index.html create mode 100644 files/it/web/javascript/guide/regular_expressions/index.html (limited to 'files/it/web/javascript/guide') diff --git a/files/it/web/javascript/guide/control_flow_and_error_handling/index.html b/files/it/web/javascript/guide/control_flow_and_error_handling/index.html new file mode 100644 index 0000000000..76e72f5cba --- /dev/null +++ b/files/it/web/javascript/guide/control_flow_and_error_handling/index.html @@ -0,0 +1,461 @@ +--- +title: Controllo del flusso di esecuzione e gestione degli errori +slug: Web/JavaScript/Guida/Controllo_del_flusso_e_gestione_degli_errori +tags: + - Controllo di flusso + - Guide + - JavaScript + - Principianti + - 'l10n:priority' +translation_of: Web/JavaScript/Guide/Control_flow_and_error_handling +--- +
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Grammar_and_types", "Web/JavaScript/Guide/Loops_and_iteration")}}
+ +

JavaScript prevede un insieme di istruzioni compatto, specifico per il controllo del flusso di esecuzione, che si può utilizzare per aggiungere un'elevata interattività alle proprie applicazioni. Questo capitolo fornisce una panoramica su queste istruzioni.

+ +

Il JavaScript reference contiene dettagli esaustivi sulle istruzioni di questo capitolo. Il carattere punto e virgola (;) è usato per separare le varie istruzioni del codice JavaScript.

+ +

Ogni espressione JavaScript è a sua volta un'istruzione. Si veda a riguardo Espressioni ed operatori per una completa descrizione delle espressioni.

+ +

Costrutto di blocco

+ +

Un costrutto fondamentale è il blocco, usato per raggruppare insieme più istruzioni, delimitato da un paio di parentesi graffe ({}):

+ +
{
+  istruzione_1;
+  istruzione_2;
+  .
+  .
+  .
+  istruzione_n;
+}
+
+ +

Esempi

+ +

Il blocco è comunemente usato assieme alle istruzioni per il controllo del flusso (e.g. if, for, while).

+ +
while (x < 10) {
+  x++;
+}
+
+ +

Qui, { x++; } rappresenta un blocco.

+ +

Importante: JavaScript prima di ECMAScript2015 non aveva la visibilità di blocco. Le variabili definite nel blocco hanno una visibilità a livello di funzione o di script in cui sono contenute e l'effetto di assegnare loro un valore persiste oltre il blocco stesso. Cioè il blocco non definisce un campo di visibilità. I blocchi "Indipendenti" ("Standalone" blocks) in JavaScript possono dare un risultato differente da quello che avrebbero prodotto in C o in Java. Per esempio:

+ +
var x = 1;
+{
+  var x = 2;
+}
+console.log(x); // produce 2
+
+ +

Risulta 2 perché l'istruzione di definizione var x dentro il blocco ha lo stesso campo di visibilità dell'istruzione var x al di fuori del blocco. Mentre in C o Java, il codice equivalente avrebbe prodotto 1.

+ +

A partire da ECMAScript2015, la dichiarazione di variabile con l'istruzione let ha visibilità di blocco. Si veda il riferimento a {{jsxref("Statements/let", "let")}} per ulteriori informazioni.

+ +

Costrutti Condizionali

+ +

Un costrutto condizionale è un insieme di istruzioni che vengono eseguite se una specifica condizione risulta vera. JavaScript prevede due costrutti condizionali: if...else e switch.

+ +

Costrutto if...else

+ +

Si usa il costrutto if per eseguire un blocco di istruzioni se una condizione logica è vera. Si usa la clausola opzionale else per eseguire istruzioni nel caso in cui la stessa condizione sia falsa. Un costrutto if...else si presenta come qui sotto:

+ +
if (condizione) {
+  istruzioni_se_vera_la_condizione;
+} else {// opzionale
+  istruzioni_se_falsa_la_condizione;
+}
+ +

Qui la condizione è qualsiasi espressione che sia valutabile come vera oppure falsa (true o false). Si veda il riferimento a Boolean per una spiegazione su cosa possa essere valutabile come true o false. Se la condizione viene valutata true, istruzioni_se_vera_la_condzione verrà eseguito, altrimenti verrà eseguito istruzioni_se_falsa_la_condzione. istruzioni_se_vera_la_condzione e istruzioni_se_falsa_la_condzione possono essere qualsiasi istruzione, incluso un altro if.

+ +

Si possono pure combinare le istruizioni else if per testare molteplici condizioni in sequenza, come il seguente codice dimostra:

+ +
if (condizione_1) {
+  istruzione_1;
+} else if (condizione_2) {
+  istruzione_2;
+} else if (condizione_n) {
+  istruzione_n;
+} else {
+  ultima_istruzione;
+}
+
+ +

Nel caso di condizioni plurime solo la prima che sia valutata come vera sarà eseguita. Per eseguire più istruzioni si devono raggruppare in un blocco ({ ... }) . In generale è buona pratica usare un blocco specialmente se si usano if annidati:

+ +
if (condizione) {
+  istruzione_1_eseguita_se_vera_la_condizione;
+  istruzione_2_eseguita_se_vera_la_condizione;
+  ...
+} else {
+  istruzione_3_eseguita_se_falsa_la_condizione;
+  istruzione_4_eseguita_se_falsa_la_condizione;
+  ...
+}
+
+ +
Non è consigliabile usare la semplice assegnazione in una espressione condizionale, perché l'assegnamento potrebbe essere confuso con il segno di uguaglianza quando si dia un'occhiata rapida al codice. Ad esempio, non si usi il seguente codice:
+ +
+ +
if (x = y) {// questa è una assegnazione
+  /* istruzioni qui */
+}
+ +

Se si deve proprio usare un assegnamento in una espressione condizionale è pratica comune aggiungere un paio di parentesi tonde attorno all'assegnamento. Per esempio:

+ +
if ((x = y)) {
+  /* istruzioni qui */
+}
+
+ +

Valori valutabili a false

+ +

I seguenti valori si valutano a false (sono anche detti {{Glossary("Falsy")}} value):

+ + + +

Tutti gli altri valori, inclusi gli oggetti, saranno valutati a true in una istruzione condizionale.

+ +

Non si confonda il valori primitivi booleani true e false con i valori true e false dell'oggetto {{jsxref("Boolean")}}. Ad esempio:

+ +
var b = new Boolean(false);
+
+if (b) // questa condizione è valutata a true
+       // perché 'b' in questo caso è un oggetto
+       // e si sa che tutti gli oggetti sono valutati a true
+
+if (b == true) // mentre questa a false,
+               // perché si va a prelevare il contenuto dell'oggetto 'b' che è false
+
+ +

Esempi

+ +

Nell'esempio a seguire la funzione controllaDati ritorna true se il numero di caratteri contenuti nella proprietà value dell'oggetto Text (treCaratteri) è tre, altrimenti mostra un popup di alert e, infine, ritorna il valore false.

+ +
function controllaDati() {
+  if (document.form1.treCaratteri.value.length == 3) {
+    return true;
+  } else {
+    alert("Immetti esattemente tre caratteri. " +
+    document.form1.treCaratteri.value + " non è valido.");
+    return false;
+  }
+}
+
+ +

Costrutto switch

+ +

Un costrutto switch permette ad un programma di valutare un'espressione e tentare di trovare la corrispondenza esatta tra il valore risultante dalla valutazione dell'espressione e l'etichetta specificata nella clausola case. Se si incontra una corrisopondenza il programma eseguirà le istruzioni associate. Un costrutto switch si presenta  come nell'esempio qui sotto riportato:

+ +
switch (espressione) {
+  case etichetta_1:
+    istruzione_1
+    [break;]// opzionale
+  case etichetta_2:
+    istruzione_2
+    [break;]
+    ...
+  default:
+    istruzioni_di_default
+    [break;]
+}
+
+ +

Il programma cerca la prima corrispondenza tra il valore ottentuto della valutazione dell'espressione e l'etichetta nella clausola case, poi trasferisce il controllo al corpo della medesima clausola eseguendo le istruzioni relative. Se non è stata trovata alcuna corrispondeza il programma va alla clausola opzionale default e, se la trova, esegue le istruizioni ad essa relative. Se non è stata data alcuna clausola default il programma continuerà con l'istruzione successiva al blocco switch. La clausola default è l'ultima che appare nel blocco switch, ma questa è una convenzione non la regola.

+ +

Il break opzionale, associato con ogni clausola case, assicura che il programma esca dal blocco switch una volta eseguite le istruzioni associate alla clausola e continui la sua esecuzione all'istruzione che segue il costrutto switch. Se il break è omesso il programma continua la sua esecuzione all'istruzione successiva nello stesso costrutto switch, ciò significa che eseguirà le istruzioni associate alla clausola case/default (se ci sono) successiva a quella appena terminata.

+ +

Esempi

+ +

Nel seguente esempio, se la variabile tipidifrutto contiene "Banane", il programma cercherà la corrispondente clausola case "Banane" ed eseguirà le istruzioni associate. Quando incontra il break, il porgramma esce dallo switch ed esegue l'istruzione successiva al blocco di switch. Se, invece, il break fosse stato omesso le istuzioni collegate con la clausola case "Ciliege" sarebbero state eseguite.

+ +
switch (tipidifrutta) {
+  case "Arance":
+    console.log("Le Arance sono a €0.59 il chilo.");
+    break;
+  case "Mele":
+    console.log("Le mele sono a €0.32 il chilo.");
+    break;
+  case "Banane":
+    console.log("Le Banane sono €0.48 il chilo.");
+    break;
+  case "Ciliege":
+    console.log("Le ciliege sono s €3.00 il chilo.");
+    break;
+  case "Mango":
+    console.log("Il Mango è è €0.56 il chilo.");
+    break;
+  case "Papaia":
+    console.log("Il Mango e la Papaia sono a €2.79 il chilo.");
+    break;
+  default:
+    console.log("Spiacenti, abbiano terminato " + tipidifrutta + ".");
+}
+console.log("C'è qualcos'altro che ti piace?");
+ +

Costrutti di gestione delle Eccezioni

+ +

Si può sollevare/generare un'eccezione attraverso l'istruzione throw e si possono gestire usando il costrutto try...catch.

+ + + +

Tipi di eccezione

+ +

Quasi ogni tipo di oggetto può essere usato per sollevare/generare un'eccezione JavaScript. Tuttavia non tutti gli oggetti utili a questo scopo sono creati in modo eguale. Mentre è abbastanza comune usare numeri o stringhe per indicare un errore, è più efficace usare uno dei tipi di eccezione specificatamente creati a questo scopo:

+ + + +

Istruzione throw

+ +

Si usa l'istruzione throw per sollevare/generare un'eccezione. Quando si genera un'eccezione va specificata un'espressione che produca un valore da usarsi come eccezione:

+ +
throw espressione;
+
+ +

Si può usare una qualsiasi espressione con l'istruzione throw e non solamente espressioni di un certo tipo. Il seguente pezzo di codice lo dimostra:

+ +
throw "Errore2";  // tipo String
+throw 42;         // tipo Number
+throw true;       // tipo Boolean
+throw {toString: function() { return "Sono un oggetto!"; } };
+
+ +
Note: Si può specificare un oggetto quando si genera un'eccezione. Si può poi far riferimento alle proprietà dell'oggetto nel blocco catch. Il seguente esempio crea un oggetto myUserException del tipo UserException e lo usa nell'istruzione throw.
+ +
// Crea un oggetto di tipo UserException
+function UserException(messaggio) {
+  this.message = messaggio;
+  this.name    = "UserException";
+}
+
+// Sovrascrive il metodo toString() affinché l'oggetto
+// dia una descrizione di se stesso al momento di usarlo come stringa.
+// (e.g. come messaggio nella console degli errori)
+UserException.prototype.toString = function() {
+  return this.name + ': "' + this.message + '"';
+}
+
+// Crea un'istanza dell'oggetto e lo usa nell'istruzione throw
+throw new UserException("Valore troppo alto!);
+ +

Costrutto try...catch (... finally)

+ +

Il costrutto try...catch racchiude un blocco di istruzioni, che potrebbero generare un'eccezione, e specifica uno o più azioni per gestire l'eccezione che potrebbe essere sollevata. Se viene sollevata un'eccezione il costrutto try...catch la cattura.

+ +

Il costrutto try...catch è costituito da un blocco try, che contiene a sua volta uno o più istruzioni, e da al più (vedi nota più sotto) un blocco catch, contenenti istruzioni per gestire l'eccezione che eventulmente sarà sollevata all'interno del blocco try.  Cioè si vorrebbe che il blocco try fosse eseguito senza errori, ma se non fosse possibile si vuole che l'esecuzione passi al blocco catch. Se un'istruzione contenuta nel blocco (o in una funzione chiamata all'interno del blocco) try genera un'eccezione, il controllo passa immediatamente al blocco catch. Se nessuna eccezione è sollevata all'interno del blocco try, il blocco catch è semplicemente ignorato. Il blocco finally (opzionale se c'è il blocco catch, ma necessario se manca quest'utimo) è eseguito subito dopo l'esecuzione dei blocchi try/catch, ma prima di una qualsiasi istruzione che segua gli stessi try...catch...finally.

+ +
+

In realtà il browser Firefox è in grado di suppostare i blocchi catch condizionati, oltre quello incondizionato, rendendo virtualmeente illimitata la definizione di più di un blocco catch per uno stesso blocco try. Tuttavia questa caratteristica non è standard e se ne scoraggia l'uso, si veda a proposito la referenza {{jsxref("Statements/try...catch", "try...catch")}}.

+
+ +

L'esempio che segue usa il costrutto di try...catch. L'esempio chiama una funzione che ritorna il nome del mese estratto da un array grazie al parametro mo passato alla funzione. Se il valore passato non corrispondesse al numero di mese consentito (tra 1 e 12), un'eccezione verrebbe sollevata col valore "numeroMeseNonValido" e il blocco catch assegnerebbe alla variabile nomeDelMese il vaore di "sconoscuto".

+ +
function getNomeDelMese(mo) {
+  mo = mo - 1; // Sistema il numero del mese (1 = Gen, 12 = Dic)
+  var mesi = ["Gen","Feb","Mar","Apr","Mag","Giu","Lug",
+                "Ago","Set","Ott","Nov","Dic"];
+  if (mesi[mo]) {
+    return mesi[mo];
+  } else {
+    throw "numeroMeseNonValido"; //l'istruzione throw è usata qui
+  }
+}
+
+try { // blocco try
+  nomeDelMese = getNomeDelMese(mese); // la funzione potrebbe sollevare un'eccezione
+}
+catch (eccezione) {
+  nomeDelMese = "sconosciuto";
+  logDegliErrori(eccezione); // Passa l'eccezione a un gestore -> una propria funzione
+
+ +

Il blocco catch

+ +

Si può usare il blocco catch per gestire le eccezioni che possono essere generate nel blocco try.

+ +
catch (catchID) {
+  // istruzioni
+}
+
+ +

Il blocco catch viene specificato un identificatore (catchID nel precedente esempio) che conterrà il valore specificato nell'istruzione throw. Si può usare questo identificatore per ottenere informazione ulteriori circa l'eccezione che è stata generata. JavaScript crea questo identificatore quando si entra nel blocco catch. L'identificatore è valido solo per la durata in esecuzione del blocco catch stesso, infatti usciti dal blocco catch termina la sua esistenza e non è più disponibile.

+ +

Per esempio, il seguente codice solleva un'eccezione. Quando l'eccezione si realizza il controllo passa al blocco catch.

+ +
try {
+  throw "miaEccezione"; // genera una eccezione
+}
+catch (eccezione) { // "eccezione" è l'identificatore con conterrà
+  // l'oggetto usato nell'istruzione thrown, in questo caso la stringa "miaEccezione"
+
+  // istruzioni che gestiscono l'eccezione
+  gestisciErrori(eccezione); // passa l'oggetto eccezione al gestore
+}
+
+ +

Il blocco finally

+ +

Il blocco finally contiene istruzioni che vengono eseguite subito dopo i blocchi try ed eventualmente catch, ma prima di ogni altra istruzione che segua il costrutto try...catch...finally. Il blocco finally è eseguito indipendentemente dal fatto che un'eccezione sia o meno generata. Se un'eccezione viene sollevata le istruzioni nel blocco finally saranno eseguite anche se il blocco catch corrispondente la gestisce.

+ +

Si può usare il blocco finally per permettere agli script di terminare elegantemente in presenza di un'eccezione, ad esempio, se si deve liberare una risorsa che lo script trattiene. Il seguente esempio apre un file e lo usa (JavaScript lato server permette di accedere al file system). Se si solleva un'eccezione mentre il file è aperto il blocco finally chiude il file prima che lo script termini/fallisca.

+ +
apriMioFile();
+try {
+  ScriviMioFile(dati); //Qui si può verificare un'eccezione/errore
+} catch(e) {
+  gestisciErrore(e); // Se avviene un errore lo si gestisce
+} finally {
+  chiudiMioFile(); // chiude comunque la risorsa
+}
+
+ +

Se il blocco finally ritorna un valore questo diviene il valore ritornato dall'intero costrutto try-catch-finally a dispetto di qualsiasi valore eventualmente ritornato dai blocchi try/catch:

+ +
function f() {
+  try {
+    console.log(0);
+    throw "fasulla";
+  } catch(e) {
+    console.log(1);
+    return true; // quasta istruzione di ritorno è sospesa
+                 // finché il blocco finally non termina
+    console.log(2); // istruzione non raggiungibile
+  } finally {
+    console.log(3);
+    return false; // sovrascrive il precedente "return"
+    console.log(4); // istruzione non raggiungibile
+  }
+  // "return false" è eseguito ora
+  console.log(5); // istruzione non raggiungibile
+}
+f(); // nel log a console troviamo stampato: 0, 1, 3 e false
+
+ +

La sovrascrittura dei valori di ritorno, da parte del blocco finally, colpisce anche le eccezioni generate e/o ri-generate dentro il blocco catch:

+ +
function f() {
+  try {
+    throw "fasulla";
+  } catch(e) {
+    console.log('catturata l\'eccezione interna "fasulla"');
+    throw e; // Quasta istruzione throw è sospesa
+             // finché il blocco finally non termina
+  } finally {
+    return false; // sovrascrive il precedente "throw"
+  }
+  // "return false" è eseguita ora
+}
+
+try {
+  f();
+} catch(e) {
+  // Questo blocco non sarà mai raggiunto in quanto l'istruzione
+  // throw dentro il blocco catch (vedi più sopra) è sovrascritta
+  // dal return della clausola finally
+  console.log('catturata l\'eccezione esterna "fasulla"');
+}
+
+// OUTPUT
+// catturata l'eccezione interna "fasulla"
+ +

try...catch innestati

+ +

Si possono annidare try...catch. Se un blocco try...catch interno non ha il blocco catch (in questo caso è d'obbligo che ci sia il blocco finally, anche vuoto, altrimenti si ha un errore sintattico), il blocco catch, del costrutto try...catch che lo racchiude, catturerà l'eventuale eccezione.

+ +
try{// try-catch esterno
+  try{
+   // try-finally interno
+    throw "eccezione fasulla";
+  }
+  // Manca il blocco catch, ma deve esserci il blocco finally
+  finally{
+    // vuoto
+  }
+}
+catch(e){
+  // Viene catturata l'eccezione sollevata dal blocco più interno
+  console.log("cattura esterna: " + e);
+}
+
+//nella console sarà stampato: "cattura esterna: eccezione fasulla"
+ +

Utilizzo degli oggetti Error

+ +

A seconda del tipo di errore se si è in grado di usare le proprietà 'name' e 'message' si può avere un messaggio più ricco. 'name' fornisce la classe generale dell'Error (e.g., 'DOMException' o 'Error'), mentre 'message' generalmente fornisce un messaggio più conciso rispetto al convertire l'oggetto corrispondente all'errore in una stringa.

+ +

Se si crea una propria eccezione affiché ci si avvantaggi di queste proprietà (come nel caso, ad esempio, del blocco catch che non discrimini tra l'oggetto rappresentante la propria eccezione e quello di sistema) si può usare il costruttore dell'oggetto Error:

+ +
function faiQualcosaSoggettaAdErrore () {
+  if (codiceCheProduceUnErrore()) {
+    throw (new Error('Il Messaggio'));
+  } else {
+    faiQualcosaPerOttenereUnEorreDiJavascript();
+  }
+}
+....
+try {
+  faiQualcosaSoggettaAdErrore();
+} catch (e) {
+  console.log(e.name);    // Scrive a console: 'Error'
+  console.log(e.message); // Scrive a console: 'Il Messaggio' o un messaggio di errore di JavaScript)
+}
+ +

I Promise

+ +

A partire da ECMAScript2015, JavaScript acquisisce il supporto agli oggetti {{jsxref("Promise")}} permettendo di controllare l'esecuzione di operazioni in modo differito e asincrono.

+ +

Un Promise può essere in uno di questi stati:

+ + + +

+ +

Caricare un'immagine con XHR

+ +

Un esempio di semplice utilizzo di un Promise e XMLHttpRequest per caricare un'immagine è disponibile nel repository promise-test di MDN GitHub. Si può anche vedere in azione. Ogni passo  è commentato e ti permette di seguire il Promise e l'architettura XHR da vicino. Qui, invece, la versione non commentata che mostra l'utilizzo del Promise per darti un'idea del suo funzionamento:

+ +
function caricaImmagine(url) {
+  return new Promise(function(resolve, reject) {
+    var request = new XMLHttpRequest();
+    request.open('GET', url);
+    request.responseType = 'blob';
+    request.onload = function() {
+      if (request.status === 200) {
+        resolve(request.response);
+      } else {
+        reject(Error('L\'immagine non è stata caricata con successo; codice di errore:'
+                     + request.statusText));
+      }
+    };
+    request.onerror = function() {
+      reject(Error('C\'è stato un errore di connessione'));
+    };
+    request.send();
+  });
+}
+ +

Per informazioni più dettagliate si veda la pagina di riferimento relativa al {{jsxref("Promise")}}.

+ +
{{PreviousNext("Web/JavaScript/Guide/Grammar_and_types", "Web/JavaScript/Guide/Loops_and_iteration")}}
diff --git a/files/it/web/javascript/guide/details_of_the_object_model/index.html b/files/it/web/javascript/guide/details_of_the_object_model/index.html new file mode 100644 index 0000000000..1e2d4dc74f --- /dev/null +++ b/files/it/web/javascript/guide/details_of_the_object_model/index.html @@ -0,0 +1,727 @@ +--- +title: Dettagli del modello a oggetti +slug: Web/JavaScript/Guida/Dettagli_Object_Model +tags: + - Guide + - Intermediate + - JavaScript +translation_of: Web/JavaScript/Guide/Details_of_the_Object_Model +--- +
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Working_with_Objects", "Web/JavaScript/Guide/Iterators_and_Generators")}}
+ +
+

Il contenuto di questo articolo è in discussione. Lascia un feedback e aiutaci a rendere migliore questa pagina: {{bug(1201380)}}.

+
+ +

JavaScript è un linguaggio ad oggetti basato su prototipi, piuttosto che sulle classi. A causa di questa diversa base, può essere meno evidente come JavaScript permette di creare gerarchie di oggetti e di avere l'ereditarietà delle proprietà e dei loro valori. Questo articolo cerca di chiarire questo aspetto.

+ +

Questo capitolo presuppone una certa familiarità con JavaScript e con l'uso delle funzioni per la creazione di semplici oggetti.

+ +

Linguaggi class-based vs. linguaggi prototype-based

+ +

I linguaggi ad oggetti basati su classi, come Java e C++, si basano su due entità distinte: le classi (classes) e le istanze (instances).

+ + + +

Un linguaggio basato su prototipi, come JavaScript, non fa questa distinzione: ha solo oggetti. Introduce la nozione di oggetto prototipo (prototypical object), un oggetto usato come modello da cui prendere le proprietà iniziali per un nuovo oggetto. Ogni oggetto può specificare le sue proprietà, anche quando viene creato o in fase di esecuzione.Inoltre, ogni oggetto può essere associato ad un altro oggetto come prototipo, consentendo al secondo oggetto di condividere le proprietà del primo.

+ +

Definizione di una classe

+ +

Nei linguaggi basati su classi, le classi vengono definite in class definition separate. In queste definizioni è possibile specificare metodi speciali, chiamari costruttori (constructors), per creare istanze della classe. Un costruttore può specificare i valori iniziali per le proprietà dell'istanza ed eseguire altre elaborazioni adatte al momento della creazione. Per creare le istanze di una classe si utilizza l'operatore new associato al metodo costruttore.

+ +

JavaScript segue un modello simile, ma non prevede la definizione della classe separata dal costruttore. Invece, per creare oggetti con un particolare set di proprietà e valori si definisce una funzione costruttore. Ogni funzione JavaScript può essere usata come costruttore. Per creare un nuovo oggetto si utilizza l'operatore new associato a una funzione costruttore.

+ +

Sottoclassi e ereditarietà

+ +

In un linguaggio basato su classi, si crea una gerarchia tra le classi attraverso le definizioni delle classi stesse. All'interno della definizione di una classe è possibile specificare che la nuova classe è una sottoclasse (subclass) di una classe esistente. La sottoclasse eredita tutte le proprietà della superclasse e può inoltre aggiungere nuove proprietà o modificare quelle ereditate. Per esempio, assumiamo che la classe Employee include solo le proprietà name e dept, e Manager è una sottoclasse di Employee che aggiunge la proprietà reports. In questo caso, un'istanza della classe Manager avrà tutte e tre le proprietà: name, dept, e reports.

+ +

JavaScript implementa l'ereditarietà permettendo di associare un oggetto prototipo ad ogni funzione costruttore. Quindi, è possibile ricreare esattamente l'esempio visto in precedenza, ma usando una terminologia leggermente diversa. Innanzitutto  si definisce la funzione costruttore Employee, specificando le proprietà name e dept. In seguito, si definisce la funzione costruttore Manager, chiamando il costruttore Employee e specificando la proprietà reports. Infine, si assegna a un nuovo oggetto derivato da Employee.prototype come il prototipo per la funzione costruttore Manager. Quando si crea un nuovo Manager, questo eredita le proprietà name e dept dall'oggetto Employee.

+ +

Aggiungere e rimuovere proprietà

+ +

Nei linguaggi basati su classi, una classe viene solitamente creata in fase di compilazione mentre le istanze possono essere create in fase di compilazione o in fase di esecuzione. Non è possibile cambiare il numero o il tipo di proprietà di una classe dopo che questa è stata definita. In JavaScript in fase di esecuzione si possono aggiungere o rimuovere proprietà a qualunque oggetto. Se si aggiunge una proprietà a un oggetto che è usato come prototipo per un gruppo di oggetti, anche gli oggetti del gruppo ereditano la nuova proprietà.

+ +

Riepilogo delle differenze

+ +

La tabella seguente fornisce un breve riepilogo di alcune di queste differenze. Il resto di questo capitolo descrive nel detteglio l'uso in JavaScript di costruttori e prototipi per creare una gerarchia di oggetti e lo confronta con la procedura che si userebbe in Java.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Confronto tra il sistema di oggetti basato su classi (Java) e il sistema di oggetti basato su prototipi (JavaScript)
Class-based (Java)Prototype-based (JavaScript)
Classi e istanze sono entità separate.Tutti gli oggetti possono ereditare da un altro oggetto.
Definire una classe con una definizione; istanziare una classe con un metodo costruttoreDefinire e creare una collezione di oggetti con una funzione costruttore.
Creare un singolo oggetto con l'operatore new.Uguale.
Costruire una gerarchia di oggetti usando la definizione di classe per definire le sottoclassi di classi esistenti.Costruire una gerarchia di oggetti assegnando un oggetto come prototipo associato a una funzione costruttore.
Ereditare le proprietà seguendo la catena delle classi.Ereditare le proprietà seguendo la catena dei prototipi.
La definizione di classe specifica tutte le proprietà di tutte le istanze della classe. Non è possibile aggiungere proprietà dinamicamente durante l'esecuzione.La funzione costruttore o il prototipo specificano un set iniziale di proprietà. È possibile aggiungere o rimuovere dinamicamente proprietà ai singoli oggetti o all'intero gruppo di oggetti.
+ +

L'esempio 'dipendente'

+ +

Il resto di questo capitolo usa la gerarchia dei dipendenti mostrata nella figura seguente.

+ +
+
+

Una semplice gerarchia con gli oggetti seguenti:

+ +

+
+ +
+
    +
  • Employee ha le proprietà name (il cui valore di default è una stringa vuota) e dept (il cui valore di default è "general").
  • +
  • Manager è basato su Employee. Aggiunge la proprietà reports  (il cui valore di default è un array vuoto, destinato a contenere una serie di oggetti Employee).
  • +
  • WorkerBee è anch'esso basato su Employee. Aggiunge la proprietà projects (il cui valore di default è un array vuoto, destinato a contenere una serie di stringhe).
  • +
  • SalesPerson è basato su WorkerBee. Aggiunge la proprietà quota (il cui valore di default è 100). Sovrascrive inoltre la proprietà dept con il valore "sales", che indica che tutti i venditori si trovano nello stesso dipartimento.
  • +
  • Engineer è basato su WorkerBee. Aggiunge la proprietà machine (il cui valore di default è una stringa vuota) e sovrascrive la proprietà dept con il valore "engineering".
  • +
+
+
+ +

Creazione della gerarchia

+ +

Ci sono diversi modi per definire una funzione costruttore appropriata per implementare la gerarchia dei dipendenti. Il modo scelto per definirli dipende molto da cosa si vuole riuscire a fare nella propria applicazione.

+ +

Questa sezione mostra come usare definizioni molto semplici (e relativamente rigide) per dimostrare come far funzionare l'ereditarietà. In queste definizioni, quando si crea un oggetto non è possibile specificare il valore di nessuna proprietà. L'oggetto creato avrà semplicemente i valori di default, che potranno essere cambiati in un secondo momento.

+ +

In una applicazione reale, probabilmente si vorranno definire dei costruttori che permettono di impostare i valori delle proprietà mentre si crea un oggetto (per maggiori informazioni si veda la sezione Costruttori più flessibili). Per adesso, queste semplici definizioni dimostrano come le proprietà vengono ereditate.

+ +

Le seguenti definizioni Java e JavaScript di Employee sono simili. L'unica differenza è che in Java si ha la necessità di specificare il tipo di ogni proprietà (questo è dovuto al fatto che Java è un linguaggio fortemente tipizzato mentre JavaScript è un linguaggio a tipizzazione dinamica.

+ +
+

JavaScript

+ +
function Employee() {
+  this.name = "";
+  this.dept = "general";
+}
+
+ +

Java

+ +
public class Employee {
+   public String name = "";
+   public String dept = "general";
+}
+
+
+ +

Le definizioni di Manager e WorkerBee mostrano la differenza nel modo di specificare l'oggetto seguente che si trova più in alto nella catena di ereditarietà. In JavaScript si aggiunge un'istanza prototipo come valore della proprietà prototype della funzione costrutore. È possibile farlo in qualsiasi momento dopo aver definito il costruttore. In Java, si specifica la superclasse all'interno della definizione della classe. Non è possibile cambiare la superclasse all'esterno della definizione.

+ +
+

JavaScript

+ +
function Manager() {
+  Employee.call(this);
+  this.reports = [];
+}
+Manager.prototype = Object.create(Employee.prototype);
+
+function WorkerBee() {
+  Employee.call(this);
+  this.projects = [];
+}
+WorkerBee.prototype = Object.create(Employee.prototype);
+
+ +

Java

+ +
public class Manager extends Employee {
+   public Employee[] reports = new Employee[0];
+}
+
+
+
+public class WorkerBee extends Employee {
+   public String[] projects = new String[0];
+}
+
+
+
+
+ +

Le definizioni di Engineer e SalesPerson creano oggetti che discendono da  WorkerBee, e quindi da Employee. Un oggetto di questo tipo ha le proprietà di tutti gli oggetti che si trovano sopra di esso nella catena. Inoltre, queste definizioni sovrascrivono il valore ereditato delle proprietà  dept con nuovi valori specifici per questi oggetti.

+ +
+

JavaScript

+ +
function SalesPerson() {
+   WorkerBee.call(this);
+   this.dept = "sales";
+   this.quota = 100;
+}
+SalesPerson.prototype = Object.create(WorkerBee.prototype);
+
+function Engineer() {
+   WorkerBee.call(this);
+   this.dept = "engineering";
+   this.machine = "";
+}
+Engineer.prototype = Object.create(WorkerBee.prototype);
+
+ +

Java

+ +
public class SalesPerson extends WorkerBee {
+   public String dept = "sales";
+   public double quota = 100.0;
+}
+
+
+public class Engineer extends WorkerBee {
+   public String machine;
+   public String dept = "engineering";
+   public String machine = "";
+}
+
+
+
+ +

Usando queste definizioni è possibile creare istanze di questi oggetti che ricevono i valori di default delle loro proprietà. La figura seguente illustra l'utilizzo di queste definizioni JavaScript per creare nuovi oggetti e mostra i valori delle diverse proprietà per questi nuovi oggetti.

+ +
+

Nota: Il termine istanza ha uno specifico significato tecnico nei linguaggi basati su classi. In questi linguaggi, un'istanza è una singola istanziazione di una classe ed è fondamentalmente differente dala classe. In JavaScript, "istanza" non ha questo significato tecnico perché JavaScript non ha questa differenza tra classi e istanze. Tuttavia, parlando di JavaScript, "istanza" può essere usato in modo informale per riferirsi a un oggetto creato usando una particolare funzione costruttore. Quindi, in questo esempio, è possibile dire che jane è un'istanza di Engineer. Allo stesso modo, sebbene i termini genitore  (parent), figlio (child), antenato (ancestor) e discendente (descendant) non hanno un significato conenzionale in JavaScript, possono essere usati in modo informale per riferirsi a oggetti che si trovano più o meno in alto nella catena dei prototipi.

+
+ +

Creazione di oggetti con definizioni semplici

+ +
+

Gerarchia degli oggetti

+ +

La gerarchia seguente è creata usando il codice sulla destra.

+ +

+ +

 

+ +

singoli oggetti

+ +
var jim = new Employee;
+// jim.name is ''
+// jim.dept is 'general'
+
+var sally = new Manager;
+// sally.name is ''
+// sally.dept is 'general'
+// sally.reports is []
+
+var mark = new WorkerBee;
+// mark.name is ''
+// mark.dept is 'general'
+// mark.projects is []
+
+var fred = new SalesPerson;
+// fred.name is ''
+// fred.dept is 'sales'
+// fred.projects is []
+// fred.quota is 100
+
+var jane = new Engineer;
+// jane.name is ''
+// jane.dept is 'engineering'
+// jane.projects is []
+// jane.machine is ''
+
+
+ +

Proprietà degli oggetti

+ +

Questa sezione spiega come gli oggetti ereditano le proprietà da altri oggetti presenti nella catena dei prototipi e cosa succede quando viene aggiunta una proprietà in fase di esecuzione.

+ +

Ereditare le proprietà

+ +

Supponiamo di creare un nuovo oggetto WorkerBee chiamato mark con l'istruzione seguente:

+ +
var mark = new WorkerBee;
+
+ +

Quando JavaScript vede l'operatore new, crea un nuovo oggeto generico e lo passa come valore della parola chiave this nella funzione costruttore WorkerBee. La funzione costruttore imposta esplicitamente il valore della proprietà projects e implicitamente il valore della proprietà interna __proto__ uguale al valore WorkerBee.prototype. (Il nome di questa proprietà ha due underscores iniziali e due finali). La proprietà __proto__ determina la catena di prototipi usata per restituire i valori delle proprietà. Una volta che queste proprietà sono impostate, JavaScript restituisce il nuovo oggetto e l'istruzione di assegnazione imposta la variabile mark per questo oggetto.

+ +

Questo processo non inserisce esplicitamente valori nell'oggetto mark (valori locali) per le proprietà che l'oggetto eredita dalla catena dei prototipi. Quando si richiede un valore di una proprietà, JavaScript prima controlla se il valore è presente nell'oggetto. Se c'è, viene restituito quel valore. Se il valore non è presente a livello locale, JavaScript controlla la catena dei prototipi (sfruttando la proprietà __proto__). Se un oggetto nella catena dei prototipi ha un valore per la proprietà, viene restituito. Se non viene trovata la proprietà, JavaScript risponde che l'oggetto non ha la proprietà cercata. In questo modo, l'oggetto mark ha le seguenti propietà con i rispettivi valori:

+ +
mark.name = "";
+mark.dept = "general";
+mark.projects = [];
+
+ +

L'oggetto mark eredita i valori per le proprietà name e dept dall'oggetto prototipo presente in mark.__proto__. Il costruttore WorkerBee assegna un valore locale per la proprietà projects. L'ereditarietà di proprietà e valori in JavaScript fnziona in questo modo. Alcune sottigliezze su questo processo sono trattate nella sezione Ereditare le proprietà (revisited).

+ +

Poiché questi costruttori non permettono di fornire valori specifici per una singola istanza, questa informazione è generica. I valori delle proprietà sono quelli di default condivisi da tutti i nuovi oggetti creati da WorkerBee. È oviamente possibile cambiare i valori di ognuna di queste proprietà. È quindi possibile assegnare informazioni specifice per mark nel modo seguente:

+ +
mark.name = "Doe, Mark";
+mark.dept = "admin";
+mark.projects = ["navigator"];
+ +

Aggiungere proprietà

+ +

In JavaScript, è possibile aggiungere proprietà a qualsiasi oggetto in fase di esecuzione. Non si è costretti ad usare solo le proprietà fornite dalla funzione costruttore. Per aggiungere una proprietà che sia specifica per un singolo oggetto, si deve assegnare il valore all'oggetto nel modo seguente::

+ +
mark.bonus = 3000;
+
+ +

Ora, l'oggetto markha una proprietà bonus, ma nessun altro WorkerBee ha questa proprietà.

+ +

Se si aggiunge una nuova proprietà a un oggetto che viene usato come prototipo per una funzione costruttore, la proprietà sarà aggiunta a tutti gli oggetti che ereditano le proprietà dal prototipo. Per esempio, è possibile aggiungere la proprietà specialty a tutti i dipendenti con l'istruzione seguente:

+ +
Employee.prototype.specialty = "none";
+
+ +

Non appena JavaScript esegue questa istruzione, anche l'oggetto mark avrà la proprietà specialty con il valore "none". La figura seguente mostra cosa succede qunado questa proprietà viene aggiunta al prototipo Employee e in seguito la si sovrascrive per il prototipo Engineer.

+ +


+ Aggiungere le proprietà

+ +

Costruttori più flessibili

+ +

Le funzioni costruttore mostrate finora non permettono di specificare i valori delle proprietà qunado viene creata un'istanza. Come in Java, è possibile fornire argomenti al costruttore per inizializzare i valori delle proprietà per le istanze. La figura seguente mostra un modo per farlo.

+ +


+ Specificare le proprietà in un costruttore, modo 1

+ +

La tabella seguente mostra le definizioni di questi oggetti in JavaScript e in Java.

+ +
+

JavaScript

+ +

Java

+
+ +
+
function Employee (name, dept) {
+  this.name = name || "";
+  this.dept = dept || "general";
+}
+
+ +

 

+ +

 

+ +

 

+ +

 

+ +
public class Employee {
+   public String name;
+   public String dept;
+   public Employee () {
+      this("", "general");
+   }
+   public Employee (String name) {
+      this(name, "general");
+   }
+   public Employee (String name, String dept) {
+      this.name = name;
+      this.dept = dept;
+   }
+}
+
+
+ +
+
function WorkerBee (projs) {
+
+ this.projects = projs || [];
+}
+WorkerBee.prototype = new Employee;
+
+ +

 

+ +

 

+ +
public class WorkerBee extends Employee {
+   public String[] projects;
+   public WorkerBee () {
+      this(new String[0]);
+   }
+   public WorkerBee (String[] projs) {
+      projects = projs;
+   }
+}
+
+
+ +
+
+function Engineer (mach) {
+   this.dept = "engineering";
+   this.machine = mach || "";
+}
+Engineer.prototype = new WorkerBee;
+
+ +

 

+ +

 

+ +
public class Engineer extends WorkerBee {
+   public String machine;
+   public Engineer () {
+      dept = "engineering";
+      machine = "";
+   }
+   public Engineer (String mach) {
+      dept = "engineering";
+      machine = mach;
+   }
+}
+
+
+ +

Queste definizioni JavaScript usano un linguaggio speciale per impostare i valori di default:

+ +
this.name = name || "";
+
+ +

In JavaScript l'operatore logico OR (||) valuta il suo primo argomento. Se questa espressione può essere convertita a true, l'operatore restituisce il primo argomento. Altrimenti l'operatore restituisce il valore del secondo argomento. Quindi, questa linea di codice verifica se name ha un valore utile per la proprietà name. Se ce l'ha, imposta this.name a questo valore. Altrimenti, imposta this.name a una stringa vuota. Questo capitolo usa questo linguaggio per brevità, comunque può disorientare a prima vista.

+ +
+

Nota: Potrebbe non funzionare come atteso se la funzione costruttore è chiamata con un argomento che converte a false (come ad esempio 0 (zero) o una stringa vuota ("")). In questo caso verrà scelto il valore di default.

+
+ +

Con queste definizioni, quando si crea un'istanza di un oggetto, è possibile specificare i valori per le proprietà definite localmente. Per creare un nuovo Engineer è possibile utilizzare l'espressione seguente:

+ +
var jane = new Engineer("belau");
+
+ +

Le proprietà di Jane sono ora:

+ +
jane.name == "";
+jane.dept == "engineering";
+jane.projects == [];
+jane.machine == "belau"
+
+ +

È da notare che con queste definizioni non è possibile specificare una valore iniziale per le proprietà ereditate, come ad esempio name. Se si desidera specificare un valore iniziale per una proprietà ereditata, in JavaScript è necessario aggiungere ulteriore codice alla funzione costruttore.

+ +

Finora, la funzione costruttore ha creato un oggetto generico e poi ha specificato proprietà locali e valori per il nuovo oggetto. È possibile fare in modo che il costruttore aggiunga più proprietà chiamando direttamente la funzione costruttore per un oggetto che si trova a un livello più alto nella catena dei prototipi. La figura seguente mostra queste nuove definizioni.

+ +


+ Specificare le proprietà in un costruttore, modo 2

+ +

Guardiamo nel dettaglio una di queste definizioni. Ecco la nuova definizione per il costruttore Engineer:

+ +
function Engineer (name, projs, mach) {
+  this.base = WorkerBee;
+  this.base(name, "engineering", projs);
+  this.machine = mach || "";
+}
+
+ +

Supponiamo di creare un nuovo oggetto Engineer nel modo seguente:

+ +
var jane = new Engineer("Doe, Jane", ["navigator", "javascript"], "belau");
+
+ +

JavaScript segue questa procedura:

+ +
    +
  1. L'operatore new crea un oggetto generico e imposta il valore Engineer.prototype per la sua proprietà __proto__.
  2. +
  3. L'operatore new passa il nuovo oggetto come valore della parola chiave this nella funzione costruttore Engineer.
  4. +
  5. Il costruttore crea una nuova proprietà per l'oggetto chiamata base e assegna il valore del costruttore WorkerBee alla proprietà base. Questo rende il costruttore WorkerBee un metode dell'oggetto Engineer. Il nome della proprietà base non è peculiare. È possibile usare qualsiasi nome per la proprietà; base è semplicemente evocativo dello scopo.
  6. +
  7. Il costruttore chiama il metodo base, passando come suoi argomenti due degli argomenti passati al costruttore ("Doe, Jane" e ["navigator", "javascript"]) e anche la stringa "engineering". Usando esplicitamente "engineering" nel costruttore indica che tutti gli oggetti Engineer hanno lo stesso valore per la proprietà dept ereditata, e questo valore sovrascrive il valore ereditato dal costruttore Employee.
  8. +
  9. Poiché base è un metodo di Engineer, all'interno della chiamata di base, JavaScript aggiunge la parola chiave this all'oggetto creato al passaggio 1. In questo modo, la funzione WorkerBee a sua volta passa gli argomenti "Doe, Jane" e "engineering" alla funzione costruttore Employee. Dopo l'esecuzione della funzione costruttore Employee, la funzione WorkerBee utilizza l'argomento rimanente per impostare la proprietà projects.
  10. +
  11. Dopo l'esecuzione del metodo base, il costruttore Engineer inizializza la proprietà machine dell'oggetto al valore "belau".
  12. +
  13. Dopo l'esecuzione del costruttore, JavaScript assegna il nuovo oggetto alla variabile jane.
  14. +
+ +

Avendo chiamato il costruttore WorkerBee dall'interno del costruttore Engineer, si potrebbe pensare di aver impostato in modo corretto l'ereditarietà per gli oggetti Engineer. Questo non è il caso. Chiamare il costruttore WorkerBee assicura che un oggetto Engineer venga creato con le proprietà specificate in tutte le funzioni costruttore che sono chiamate. Però, se in un secondo momento vengono aggiunte proprietà ai prototipi Employee o WorkerBee, queste proprietà non saranno ereditate dall'oggetto Engineer. Per esempio, se si considera il codice seguente:

+ +
function Engineer (name, projs, mach) {
+  this.base = WorkerBee;
+  this.base(name, "engineering", projs);
+  this.machine = mach || "";
+}
+var jane = new Engineer("Doe, Jane", ["navigator", "javascript"], "belau");
+Employee.prototype.specialty = "none";
+
+ +

L'oggetto jane non eredita la proprietà specialty. È comunque necessario impostare esplicitamente il prototipo per garantire l'ereditarietà dinamica. Se si considera invece l'esempio seguente:

+ +
function Engineer (name, projs, mach) {
+  this.base = WorkerBee;
+  this.base(name, "engineering", projs);
+  this.machine = mach || "";
+}
+Engineer.prototype = new WorkerBee;
+var jane = new Engineer("Doe, Jane", ["navigator", "javascript"], "belau");
+Employee.prototype.specialty = "none";
+
+ +

Adesso il valore per l'oggetto jane della proprietà specialty è "none".

+ +

Un altro modo per ereditare le proprietà è l'utilizzo dei metodi call() e apply(). Gli esempi sottostanti si equivalgono:

+ +
+
function Engineer (name, projs, mach) {
+  this.base = WorkerBee;
+  this.base(name, "engineering", projs);
+  this.machine = mach || "";
+}
+
+ +
function Engineer (name, projs, mach) {
+  WorkerBee.call(this, name, "engineering", projs);
+  this.machine = mach || "";
+}
+
+
+ +

L'utilizzo del metodo call() costituisce un'implementazione più pulita poiché la proprietà base non è più necessaria.

+ +

Ereditare le proprietà (revisited)

+ +

Le sezioni precedenti descrivono come i costruttori e i prototipi consentono di avere gerarchia ed ereditarietà in JavaScript. Questa sezione espone alcune sottiglienzze che non erano necessariamente evidenti nelle discussioni precedenti.

+ +

Valori locali vs. valori ereditati

+ +

Quando si accede a una proprietà di un oggetto, JavaScript esegue i seguenti passaggi, come descritto in precedenza in questo capitolo:

+ +
    +
  1. Verifica se il valore è presente a livello locale. Se c'è, restituisce quel valore.
  2. +
  3. Se non è presente, verifica la catena dei prototipi (usando la proprietà __proto__).
  4. +
  5. Se un oggetto nella catena dei prototipi ha un valore per la proprietà specificata, restituisce quel valore.
  6. +
  7. Se la proprietà non viene trovata, l'oggetto non ha la proprietà.
  8. +
+ +

Il risultato di questo processo dipende da come sono stati definiti gli elementi. L'esempio iniziale aveva queste definizioni:

+ +
function Employee () {
+  this.name = "";
+  this.dept = "general";
+}
+
+function WorkerBee () {
+  this.projects = [];
+}
+WorkerBee.prototype = new Employee;
+
+ +

Con queste definizioni, si supponga di creare amy come un'istanza di WorkerBee con la seguente istruzione:

+ +
var amy = new WorkerBee;
+
+ +

L'oggetto amy ha una proprietà locale, projects. I valori per le proprietà name e dept non sono specifici per amy e quindi derivano dalla proprietà __proto__ dell'oggetto amy. Quindi, amy ha i seguenti valori:

+ +
amy.name == "";
+amy.dept == "general";
+amy.projects == [];
+
+ +

Ora si supponga di cambiare il valore della proprietà name nel prototipo associato con Employee:

+ +
Employee.prototype.name = "Unknown"
+
+ +

Ci si potrebbe aspettare che il nuovo valore si propaghi a tutte le istanze di Employee. Invece, non lo fa.

+ +

Quando si crea qualsiasi istanza dell'oggetto Employee, questa istanza riceve un valore locale per la proprietà name (la stringa vuota). Questo significa che quando si imposta il prototipo WorkerBee creando un nuovo oggetto Employee, WorkerBee.prototype avrà un valore locale per la proprietà name. Quindi, quando JavaScript legge la proprietà name dell'oggetto amy (istanza di WorkerBee), trova in WorkerBee.prototype il valore locale di questa proprietà. Pertanto non continua a cercare nella catena salendo a Employee.prototype.

+ +

Se si vuole cambiare il valore di una proprietà di un oggetto in fase di esecuzione e si vuole che il nuovo valore venga ereditato da tutti i discendenti dell'oggetto, non è possibile definire la proprietà all'interno della funzione costruttore dell'oggetto. Invece, si aggiunge la proprietà al prototipo associato al costruttore. Per esempio, assumiamo di cambiare il codice precedente con quello che segue:

+ +
function Employee () {
+  this.dept = "general";    // Note that this.name (a local variable) does not appear here
+}
+Employee.prototype.name = "";    // A single copy
+
+function WorkerBee () {
+  this.projects = [];
+}
+WorkerBee.prototype = new Employee;
+
+var amy = new WorkerBee;
+
+Employee.prototype.name = "Unknown";
+
+ +

In questo caso, il valore della proprietà name di amy diventa "Unknown".

+ +

Come mostra questo esempio, se si vogliono avere i valori di default per le proprietà dell'oggetto e si vuole avere la possibilità di cambiare questi valori in fase di esecuzione, si devono impostare le proprietà nel prototipo del costruttore, e non direttamente nella funzione costruttore.

+ +

Determinazione delle relazioni tra istanze

+ +

In JavaScript la ricerca delle proprietà (property lookup) controlla prima tra le proprietà specifiche dell'oggetto e, se il nome della proprietà non viene trovato, controlla la proprietà speciale __proto__. Il processo, chiamato "ricerca nella catena dei prototipi" (lookup in the prototype chain), continua ricorsivamente .

+ +

Quando un oggetto viene costruito, la proprietà speciale __proto__ viene impostata al valore della proprietà prototype del costruttore. L'espressione new Foo() crea un oggetto con __proto__ == Foo.prototype. Di conseguenza, le modifiche alle proprietà di Foo.prototype alterano la ricerca delle proprietà per tutti gli oggetti che sono stati creati con new Foo().

+ +

Ogni oggetto ha una proprietà __proto__ (ad eccezione di Object); ogni funzione ha una proprietà prototype. Quindi gli oggetti possono essere correlati ad altri oggetti attraverso una 'ereditarietà prototipale' (prototypal inheritance). È possibile verificare l'ereditarietà confrontando la proprietà __proto__ di un oggetto con l'oggetto prototype di una funzione. JavaScript fornisce una scorciatoia: l'operatore instanceof confronta un oggetto con una funzione e restituisce true se l'oggetto eredita dal prototipo della funzione. Per esempio,

+ +
var f = new Foo();
+var isTrue = (f instanceof Foo);
+ +

Per un esempio più dettagliato, supponiamo di avere lo stesso gruppo di definizioni visto nella sezione For a more detailed example, suppose you have the same set of definitions shown in Ereditare le proprietà. Creiamo un oggetto Engineer nel modo seguente:

+ +
var chris = new Engineer("Pigman, Chris", ["jsd"], "fiji");
+
+ +

Per questo oggetto, tutti gli enunciati seguenti sono veri:

+ +
chris.__proto__ == Engineer.prototype;
+chris.__proto__.__proto__ == WorkerBee.prototype;
+chris.__proto__.__proto__.__proto__ == Employee.prototype;
+chris.__proto__.__proto__.__proto__.__proto__ == Object.prototype;
+chris.__proto__.__proto__.__proto__.__proto__.__proto__ == null;
+
+ +

Dato ciò, è possibile scrivere una funzione instanceOf come segue:

+ +
function instanceOf(object, constructor) {
+   object = object.__proto__;
+   while (object != null) {
+      if (object == constructor.prototype)
+         return true;
+      if (typeof object == 'xml') {
+        return constructor.prototype == XML.prototype;
+      }
+      object = object.__proto__;
+   }
+   return false;
+}
+
+ +
+

Nota: L'implementazione vista sopra verifica se l'oggetto è di tipo "xml" per ovviare a una stranezza nel modo in cui gli oggetti XML sono rappresentati nelle versioni recenti di JavaScript. Per i dettagli essenziali si veda il {{ bug(634150) }}.

+
+ +

Se si utilizza la funzione instanceOf definita in precedenza, queste espressioni sono vere:

+ +
instanceOf (chris, Engineer)
+instanceOf (chris, WorkerBee)
+instanceOf (chris, Employee)
+instanceOf (chris, Object)
+
+ +

Ma l'espressione seguente è falsa:

+ +
instanceOf (chris, SalesPerson)
+
+ +

Informazioni globali nei costruttori

+ +

Quando vengono creati dei costruttori, è necessario essere scrupolosi se si impostano informazioni globali all'interno del costruttore. Per esempio, se si vuole che un ID univoco venga assegnato automaticamente a ogni nuovo Employee si potrebbe usare la definizione seguente:

+ +
var idCounter = 1;
+
+function Employee (name, dept) {
+   this.name = name || "";
+   this.dept = dept || "general";
+   this.id = idCounter++;
+}
+
+ +

Con questa definizione, quando viene creato un nuovo Employee, il costruttore assegna l'ID seguente e incrementa il contatore globale (idCounter). Così, se l'istruzione successiva è la seguente, l'ID di victoria sarà 1, l'ID di harry sarà 2:

+ +
var victoria = new Employee("Pigbert, Victoria", "pubs")
+var harry = new Employee("Tschopik, Harry", "sales")
+
+ +

Questa a prima vista potrebbe sembrare la procedura corretta. Tuttavia, il contatore globale idCounter viene incrementato ogni volta che viene creato un oggetto Employee, per qualsiasi scopo. Se viene creata l'intera gerarchia di oggetti Employee mostrata in questo capitolo, il costruttore Employee viene chiamato ogni volta che si definisce un prototipo. Supponiamo di avere il codice seguente:

+ +
var idCounter = 1;
+
+function Employee (name, dept) {
+   this.name = name || "";
+   this.dept = dept || "general";
+   this.id = idCounter++;
+}
+
+function Manager (name, dept, reports) {...}
+Manager.prototype = new Employee;
+
+function WorkerBee (name, dept, projs) {...}
+WorkerBee.prototype = new Employee;
+
+function Engineer (name, projs, mach) {...}
+Engineer.prototype = new WorkerBee;
+
+function SalesPerson (name, projs, quota) {...}
+SalesPerson.prototype = new WorkerBee;
+
+var mac = new Engineer("Wood, Mac");
+
+ +

Si assuma inoltre che le definizioni omesse abbiano la proprietà base e chiamino il costruttore che si trova al livello superiore nella catena dei prototipi. In questo caso, nel momento in cui viene creato l'oggetto mac, il valore di mac.id sarà 5.

+ +

A seconda dell'applicazione, può essere più o meno importante che il valore del contatore sia stato incrementato queste volte aggiuntive. Se interessa il valore esatto di questo contatore, una soluzione possibile può prevedere l'uso del costruttore seguente al posto di quello visto in precedenza:

+ +
function Employee (name, dept) {
+   this.name = name || "";
+   this.dept = dept || "general";
+   if (name)
+      this.id = idCounter++;
+}
+
+ +

Quando viene creata un'istanza di Employee che deve essere usata come prototipo, non vengono forniti argomenti al costruttore. Usando questa definizione del costruttore, quando non vengono inseriti argomenti, il costruttore non assegna un valore all'ID e non aggiorna il contatore. Quindi, affinché a un oggetto Employee venga assegnato un ID, è necesario specificare un nome per il dipendente. In questo esempio, l'ID di mac sarà 1.

+ +

JavaScript non supporta l'ereditarietà multipla

+ +

Alcuni linguaggi ad oggetti ammettono l'ereditarietà multipla. Ossia, un oggetto può ereditare proprietà e valori da oggetti genitori non correlati. Javascript non supporta l'ereditarietà multipla.

+ +

L'eredità dei valori delle proprietà si ha in fase di esecuzione quando JavaScript cerca attraverso la catena dei prototipo di un oggetto per trovare un valore. Poiché un oggetto ha un unico prototipo associato, JavaScript non può ereditare dinamicamente da più di una catena di prototipi.

+ +

In JavaScript, è possibile che una funzione costruttore chiami al suo interno diverse funzioni costruttore. Questo dà l'illusione dell'ereditarietà multipla. Per esempio consideriamo le istruzioni seguenti:

+ +
function Hobbyist (hobby) {
+   this.hobby = hobby || "scuba";
+}
+
+function Engineer (name, projs, mach, hobby) {
+   this.base1 = WorkerBee;
+   this.base1(name, "engineering", projs);
+   this.base2 = Hobbyist;
+   this.base2(hobby);
+   this.machine = mach || "";
+}
+Engineer.prototype = new WorkerBee;
+
+var dennis = new Engineer("Doe, Dennis", ["collabra"], "hugo")
+
+ +

Assumiamo inoltre che la definizione di WorkerBee sia quella usata in precedenza in questo capitolo. In questo caso, l'oggetto dennis avrà queste proprietà:

+ +
dennis.name == "Doe, Dennis"
+dennis.dept == "engineering"
+dennis.projects == ["collabra"]
+dennis.machine == "hugo"
+dennis.hobby == "scuba"
+
+ +

Quindi dennis riceve la proprietà hobby dal costruttore Hobbyist. Però, se in seguito si aggiunge una proprietà al prototipo del costruttore Hobbyist:

+ +
Hobbyist.prototype.equipment = ["mask", "fins", "regulator", "bcd"]
+
+ +

L'oggetto dennis non erediterà questa nuova proprietà.

+ +
{{PreviousNext("Web/JavaScript/Guide/Working_with_Objects", "Web/JavaScript/Guide/Iterators_and_Generators")}}
diff --git a/files/it/web/javascript/guide/functions/index.html b/files/it/web/javascript/guide/functions/index.html new file mode 100644 index 0000000000..4aca8d5a7b --- /dev/null +++ b/files/it/web/javascript/guide/functions/index.html @@ -0,0 +1,646 @@ +--- +title: Funzioni +slug: Web/JavaScript/Guida/Functions +translation_of: Web/JavaScript/Guide/Functions +--- +
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Loops_and_iteration", "Web/JavaScript/Guide/Expressions_and_Operators")}}
+ +
 
+ +

Le funzioni sono tra i blocchi di programmazione fondamentali in JavaScript. Una funzione è una procedura JavaScript — un gruppo di istruzioni ( statement ) che esegue un compito o calcola un valore. Per usare una funzione, occorre definirla, all'interno dello scope dal quale la si invocherà.

+ +

Vedi anche l'esaustivo capitolo della guida di riferimento, che tratta delle funzioni JavaScript, per avere maggiori dettagli.

+ +

Definire una funzione

+ +

Dichiarazioni di funzione

+ +

Una definizione di funzione ( o dichiarazione di funzione, o istruzione di funzione ) consiste della parola chiave function, seguita da:

+ + + +

Per esempio, il codice seguente definisce una funzione semplice chiamata square:

+ +
function square(number) {
+  return number * number;
+}
+
+ +

La funzione square riceve un argomento, chiamato number. La funzione contiene una sola istruzione che dice di restituire ( return ) l'argomento della funzione ( number ) moltiplicato per se stesso. L'istruzione return specifica il valore restituito dalla funzione.

+ +
return number * number;
+
+ +

I parametri primitivi ( quale un numero ) vengono passati alla funzione come valore; il valore è passato alla funzione, ma se la funzione cambia il valore del parametro, questo cambiamento non si riflette globalmente, o nella funzione chiamante ( la funzione che, eventualmente, ha invocato la funzione in esecuzione ).

+ +

Se, invece, alla funzione viene passato un oggetto ( un valore non-primitivo, come, ad esempio, un Array oppure un oggetto definito dall'utente ) come parametro e la funzione modifica le proprietà dell'oggetto, quella modifica sarà visibile anche fuori dalla funzione, come si può vedere dal seguente esempio:

+ +
function myFunc(theObject) {
+  theObject.make = "Toyota";
+}
+
+var mycar = {make: "Honda", model: "Accord", year: 1998};
+var x, y;
+
+x = mycar.make; // x gets the value "Honda"
+
+myFunc(mycar);
+y = mycar.make; // y gets the value "Toyota"
+                // (the make property was changed by the function)
+
+ +

Espressioni di funzione

+ +

Mentre la dichiarazione di funzione di cui sopra è, da un punto di vista sintattico, un'istruzione, le funzioni possono anche essere create da un'espressione di funzione. Una funzione di questo tipo può anche essere anonima; vale a dire, non deve avere un nome. Per esempio, la funzione square potrebbe essere stata definita come:

+ +
var square = function(number) { return number * number };
+var x = square(4) // x gets the value 16
+ +

Tuttavia, è possibile assegnare un nome alla funzione anche con l'espressione di funzione e quel nome potrà essere utilizzato all'interno della funzione, per riferirsi alla funzione stessa, oppure in un debugger, per identificare la funzione all'interno dello stack:

+ +
var factorial = function fac(n) { return n<2 ? 1 : n*fac(n-1) };
+
+console.log(factorial(3));
+
+ +

NB: l'oggetto console non è un oggetto standard. Non usatelo in un sito web, poichè potrebbe non funzionare correttamente. Per verificare il funzionamento dell'esempio precedente, usate, piuttosto:

+ +

           window.alert(factorial(3));

+ +

Le espressioni di funzione sono utili quando si vuole passare una funzione ad un'altra funzione, come argomento. Il prossimo esempio mostra una funzione map che viene definita e poi invocata, con una funzione anonima come primo parametro:

+ +
function map(f,a) {
+  var result = [], // Create a new Array
+      i;
+  for (i = 0; i != a.length; i++)
+    result[i] = f(a[i]);
+  return result;
+}
+
+ +

Il seguente codice:

+ +
map(function(x) {return x * x * x}, [0, 1, 2, 5, 10]);
+
+ +

restituisce [0, 1, 8, 125, 1000].

+ +

In JavaScript, una funzione può essere definita in base ad una condizione. Per esempio, la definizione di funzione seguente definisce la funzione myFunc solo se num è uguale a 0 ( zero ):

+ +
var myFunc;
+if (num == 0){
+  myFunc = function(theObject) {
+    theObject.make = "Toyota"
+  }
+}
+ +

Per definire una funzione, inoltre, è possibile usare il costruttore Function, per creare funzioni da una stringa, in runtime, in modo simile a eval().

+ +

Un metodo è una funzione che è una proprietà di un oggetto. Leggi di più sugli oggetti e sui metodi in Working with objects.

+ +

Chiamare ( invocare ) una funzione

+ +

Definire una funzione non significa eseguirla. Definire una funzione significa semplicemente darle un nome e specificare cosa fare quando la funzione viene chiamata ( invocata ). Chiamare una funzione significa eseguire le azioni specificate, utilizzando i parametri indicati. Per esempio, se definiamo la funzione square, possiamo chiamarla o invocarla nel modo seguente:

+ +
square(5);
+
+ +

Questa istruzione chiama la funzione, inviandole un argomento, il numero 5. La funzione esegue le sue istruzioni e restituisce il valore 25.

+ +

Le funzioni devono essere in scope quando vengono chiamate, ma la dichiarazione di funzione può anche apparire sotto la chiamata, nel codice sorgente, come nell'esempio seguente:

+ +
console.log(square(5));
+/* ... */
+function square(n) { return n*n }
+
+ +

Lo scope di una funzione è la funzione nella quale è stata dichiarata, oppure l'intero programma se la dichiarazione è stata fatta al livello più alto, non annidata in alcun altro blocco di programmazione.

+ +
+

Nota: l'ultimo esempio funziona solo quando la funzione viene definita utilizzando la sintassi usata nell'esempio ( function funcName(){} ). Il codice seguente, invece, non funzionerà:

+
+ +
console.log(square(5));
+square = function (n) {
+  return n * n;
+}
+
+ +

Gli argomenti di una funzione non sono limitati alle stringhe testuali e ai numeri. È possibile passare anche interi oggetti ad una funzione. La funzione show_props() (definita in Working with objects) è un esempio di funzione che riceve, come argomento, un oggetto.

+ +

Una funzione può chiamare se stessa. Per esempio, ecco una funzione che calcola in modo ricorsivo i fattoriali ( molto simile alla funzione fac() vista poco prima in questa stessa pagina ):

+ +
function factorial(n){
+  if ((n == 0) || (n == 1))
+    return 1;
+  else
+    return (n * factorial(n - 1));
+}
+
+ +

A questo punto, è possibile calcolare i fattoriali dei cinque numeri seguenti:

+ +
var a, b, c, d, e;
+a = factorial(1); // a gets the value 1
+b = factorial(2); // b gets the value 2
+c = factorial(3); // c gets the value 6
+d = factorial(4); // d gets the value 24
+e = factorial(5); // e gets the value 120
+
+ +

Esistono altri metodi per chiamare una funzione. Ci sono casi in cui una funzione deve essere chiamata dinamicamente, oppure casi in cui il numero degli argomenti passati alla funzione varia, oppure casi in cui il contesto della chiamata di funzione deve essere impostato ad uno specifico oggetto, determinato in runtime ( tempo di esecuzione ). È chiaro che le funzioni sono, esse stesse, oggetti, e che questi oggetti hanno propri metodi (vedi l'oggetto Function). Uno di questi metodi, apply(), può essere usato a questo scopo.

+ +

Lo scope di una funzione

+ +

Alle variabili definite all'interno di una funzione non è possibile accedere dall'esterno della funzione, poichè la variabile è definita solo per lo scope della funzione ( scope: portata, ambiente, ambito in cui il nome della variabile può essere utilizzato per riferirsi ad essa ). Tuttavia, una funzione può accedere a tutte le variabili e a tutte le funzioni definite all'interno dello scope in cui è stata definita. In altre parole, una funzione definita nello scope globale può accedere a tutte le variabili definite nello scope globale. Una funzione definita all'interno di un'altra funzione può accedere anche a tutte le variabili definite nella funzione genitrice ( parent ), oltre che a tutte le altre variabili alle quali può accedere la funzione genitrice.

+ +
// Queste variabili sono definite nello scope globale
+
+var num1 = 20,
+    num2 = 3,
+    name = "Chamahk";
+
+// Questa funzione è definita nello scope globale
+
+function multiply() {
+    return num1 * num2;
+    }
+
+multiply(); // restituisce 60
+
+// Un esempio di funzione annidata
+function getScore () {
+  var num1 = 2,
+      num2 = 3;
+
+  function add() {
+    return name + " scored " + (num1 + num2);
+  }
+
+  return add();
+}
+
+getScore(); // restituisce "Chamahk scored 5"
+
+ +

Scope e lo stack della funzione

+ +

Ricorsione

+ +

Una funzione può chiamare se stessa. Esistono tre modi per una funzione di chiamare se stessa:

+ +
    +
  1. il nome della funzione
  2. +
  3. arguments.callee
  4. +
  5. una variabile in-scope che fa da riferimento alla funzione
  6. +
+ +

Per esempio, considerate la seguente definizione di funzione:

+ +
var foo = function bar() {
+   // statements go here
+};
+
+ +

All'interno del corpo della funzione, le tre seguenti istruzioni sono equivalenti:

+ +
    +
  1. bar()
  2. +
  3. arguments.callee()
  4. +
  5. foo()
  6. +
+ +

Una funzione che chiama se stessa viene detta funzione ricorsiva. In qualche modo, la ricorsione è analoga ad un loop. Entrambi eseguono lo stesso codice più volte ed entrambi richiedono una condizione (per evitare un loop infinito, o piuttosto, una ricorsione infinita, in questo caso). Per esempio, il loop seguente:

+ +
var x = 0;
+while (x < 10) { // "x < 10" is the loop condition
+   // do stuff
+   x++;
+}
+
+ +

può essere convertito in una funzione ricorsiva e in una chiamata a quella funzione:

+ +
function loop(x) {
+  if (x >= 10) // "x >= 10" is the exit condition (equivalent to "!(x < 10)")
+    return;
+  // do stuff
+  loop(x + 1); // the recursive call
+}
+loop(0);
+
+ +

Tuttavia, alcuni algoritmi non possono essere semplici loop iterativi. Per esempio, per avere tutti i nodi di una struttura ad albero (per esempio, il DOM) è molto più semplice usare la ricorsione:

+ +
function walkTree(node) {
+  if (node == null) //
+    return;
+  // do something with node
+  for (var i = 0; i < node.childNodes.length; i++) {
+    walkTree(node.childNodes[i]);
+  }
+}
+
+ +

Paragonato alla funzione loop, ciascuna chiamata ricorsiva, qui, esegue, a sua volta, molte chiamate ricorsive.

+ +

È possibile convertire qualsiasi algoritmo ricorsivo in un algoritmo non ricorsivo, ma spesso la logica è molto più complessa e per farlo è necessario utilizzare uno stack. In effetti, la ricorsione stessa usa uno stack: lo stack della funzione.

+ +

Un comportamento paragonabile allo stack può essere visto nell'esempio seguente:

+ +
function foo(i) {
+  if (i < 0)
+    return;
+  console.log('begin:' + i);
+  foo(i - 1);
+  console.log('end:' + i);
+}
+foo(3);
+
+// Output:
+
+// begin:3
+// begin:2
+// begin:1
+// begin:0
+// end:0
+// end:1
+// end:2
+// end:3
+ +

Funzioni annidate e chiusure

+ +

È possibile annidare una funzione all'interno di una funzione. La funzione annidata ( interna ) è privata, rispetto alla funzione che la contiene (outer o esterna). Essa forma anche una chiusura ( closure ). Una chiusura è un'espressione (normalmente, una funzione) che può avere variabili libere ( non locali ) legate ad un ambiente (ambiente che "chiude" l'espressione).

+ +

Dal momento in cui una funzione annidata è una chiusura, una funzione annidata può "ereditare" gli argomenti e le variabili della sua funzione contenitore (esterna o genitrice). In altre parole, la funzione interna contiene lo scope ( ambiente ) della funzione esterna.

+ +

Per riepilogare:

+ + + + + +

Ecco un esempio di funzione annidata:

+ +
function addSquares(a,b) {
+  function square(x) {
+    return x * x;
+  }
+  return square(a) + square(b);
+}
+a = addSquares(2,3); // restituisce 13
+b = addSquares(3,4); // restituisce 25
+c = addSquares(4,5); // restituisce 41
+
+ +

Dal momento in cui la funzione interna forma una chiusura, è possibile chiamare la funzione esterna e specificare gli argomenti per entrambe le funzioni, quella esterna e quella interna:

+ +
function outside(x) {
+  function inside(y) {
+    return x + y;
+  }
+  return inside;
+}
+fn_inside = outside(3); // Come dire: dammi una funzione che addizioni 3 a qualsiasi altro valore le venga passato
+result = fn_inside(5); // restituisce 8
+
+result1 = outside(3)(5); // restituisce 8
+
+ +

Persistenza delle variabili

+ +

Da notare come x venga preservata anche all'uscita da inside. Una chiusura deve preservare argomenti e variabili in tutti gli scope ai quali è riferita. Poichè ogni chiamata potrebbe trasportare argomenti differenti, per ogni chiamata alla funzione outside viene creata una nuova chiusura. La memoria può essere liberata solo quando inside non è più accessibile.

+ +

Una chiusura non è differente da un riferimento ad un oggetto, ma è meno ovvia di quest'ultimo, perchè non richiede di impostare direttamente il riferimento e perchè non è possibile ispezionare l'oggetto al quale il riferimento punta.

+ +

Funzioni annidate multiple

+ +

Le funzioni possono essere annidate a più livelli. Per esempio, una funzione (A), può contenere una funzione (B), che può contenere, a sua volta, una funzione (C). Entrambe le funzioni B e C formano una chiusura, qui, così B può accedere ad A e C può accedere a B. Inoltre, visto che C può accedere a B che può accedere ad A, C può anche accedere ad A. Quindi, le chiusure possono contenere più scope; ciascuna chiusura contiene lo scope delle funzioni che la contengono. Questo meccanismo è chiamato scope chaining ( catena di scope ). (Perchè è chiamata "catena" sarà chiaro tra poco.)

+ +

Considerate l'esempio seguente:

+ +
function A(x) {
+  function B(y) {
+    function C(z) {
+      console.log(x + y + z);
+    }
+    C(3);
+  }
+  B(2);
+}
+A(1); // logs 6 (1 + 2 + 3)
+
+ +

In questo esempio, C accede alla variabile y di B e alla x di A. Questo accade perchè:

+ +
    +
  1. B forma una chiusura che include A: quindi, B può accedere agli argomenti ed alle variabili di A.
  2. +
  3. C forma una chiusura che include B.
  4. +
  5. Poichè la chiusura di B include A, la chiusura di C include A; C può accedere agli argomenti ed alle variabili sia di B che di A. In altre parole, C unisce in una catena gli scope di B ed A in quell'ordine.
  6. +
+ +

Il contrario, tuttavia, non è vero. A non può accedere a C, perchè A non può accedere ad alcun argomento o variabile di B, di cui C è una variabile. Quindi, C resta privata solo a  B.

+ +

Conflitti tra nomi

+ +

Quando due argomenti o variabili, all'interno degli scope di una chiusura hanno lo stesso nome, nasce un conflitto tra nomi. Gli scope più interni hanno la precedenza, così lo scope più annidato ha la precedenza più elevata, mentre lo scope più esterno ha la precedenza più bassa. Questa è la catena degli scope. Il primo della catena è lo scope più annidato, mentre l'ultimo è lo scope più esterno. Vediamo il seguente esempio:

+ +
function outside() {
+  var x = 10;
+  function inside(x) {
+    return x;
+  }
+  return inside;
+}
+result = outside()(20); // returns 20 instead of 10
+ +

Il conflitto tra nomi avviene con l'istruzione return x ed è tra il nome del parametro x di inside ed il nome della variabile x di outside. La catena di scope qui è {inside, outside, global object}. Quindi, la x di inside ha la precedenza sulla x di outside: il valore restituito, alla fine, sarà 20 ( la x di inside ) e non 10 ( la x di  outside ).

+ +

Closure

+ +

Le closure sono uno dei meccanismi più potenti di JavaScript. JavaScript permette l'annidamento di funzioni e riconosce alla funzione interna il pieno accesso a tutte le variabili e a tutte le funzioni definite nella funzione esterna ( e a tutte le altre variabili e funzioni cui la funzione esterna ha accesso ). Tuttavia, la funzione esterna non ha accesso alle variabili ed alle funzioni definite nella funzione interna. Questo offre una certa protezione alle variabili della funzione interna. Inoltre, dal momento in cui la funzione interna ha accesso allo scope della funzione esterna, le variabili e le funzioni definite nella funzione esterna sopravviveranno alla funzione esterna stessa, se la funzione interna fa in modo di sopravvivere alla funzione esterna. Una closure viene creata quando la funzione interna viene resa disponibile in qualche modo agli scope esterni alla funzione esterna.

+ +
var pet = function(name) {   // La funzione esterna definisce una variabile di nome "name"
+  var getName = function() {
+    return name;             // La funzione interna ha accesso alla variabile "name" della funzione esterna
+  }
+  return getName;            // restituisce la funzione interna, esponendola, quindi, a scope esterni
+},
+myPet = pet("Vivie");
+
+myPet();                     // restituisce "Vivie"
+
+ +

Può essere molto più complicato del codice scritto sopra. Può essere restituito un oggetto contenente metodi per manipolare le variabili interne della funzione esterna.

+ +
var createPet = function(name) {
+  var sex;
+
+  return {
+    setName: function(newName) {
+      name = newName;
+    },
+
+    getName: function() {
+      return name;
+    },
+
+    getSex: function() {
+      return sex;
+    },
+
+    setSex: function(newSex) {
+      if(typeof newSex == "string" && (newSex.toLowerCase() == "male" || newSex.toLowerCase() == "female")) {
+        sex = newSex;
+      }
+    }
+  }
+}
+
+var pet = createPet("Vivie");
+pet.getName();                  // Vivie
+
+pet.setName("Oliver");
+pet.setSex("male");
+pet.getSex();                   // male
+pet.getName();                  // Oliver
+
+ +

Nel codice sopra, la variabile name della funzione esterna è accessibile alle funzioni interne e non c'è modo di accedere alle variabili interne, se non attraverso le funzioni interne. Le variabili interne della funzione interna agiscono come magazzino sicuro per le funzioni interne. Esse conservano i dati "persistenti" e sicuri che le funzioni interne utilizzano. Le funzioni non hanno nemmeno bisogno di vedersi assegnare ad una variabile o di avere un nome.

+ +
var getCode = (function(){
+  var secureCode = "0]Eal(eh&2";    // A code we do not want outsiders to be able to modify...
+
+  return function () {
+    return secureCode;
+  };
+})();
+
+getCode();    // Returns the secureCode
+
+ +

Ci sono, tuttavia, alcuni pericoli dai quali guardarsi, quando si utilizzano le closure. Se una funzione chiusa definisce una variabile che ha lo stesso nome di una variabile definita nello scope esterno, non sarà più possibile riferirsi alla variabile esterna.

+ +
var createPet = function(name) {  // Outer function defines a variable called "name"
+  return {
+    setName: function(name) {    // Enclosed function also defines a variable called "name"
+      name = name;               // ??? How do we access the "name" defined by the outer function ???
+    }
+  }
+}
+
+ +

È davvero  complicato usare la variabile magica this nelle closure. La variabile this è da usarsi con cautela, poichè ciò a cui this si riferisce dipende esclusivamente da dove è stata invocata la funzione, piuttosto che da dove è stata definita.

+ +

Usare l'oggetto arguments

+ +

Gli argomenti di una funzione vengono memorizzati in un oggetto, strutturato come un array. All'interno di una funzione, è possibile riferirsi agli argomenti passati alla funzione stessa nel modo seguente:

+ +
arguments[i]
+
+ +

dove i è il numero ordinale dell'argomento, a partire da zero. Così, il primo argomento passato ad una funzione sarà arguments[0]. Il numero totale degli argomenti è dato da arguments.length.

+ +

Usando l'oggetto arguments, è possibile chiamare una funzione con più argomenti di quanti ne possa formalmente accettare. Questo è spesso utile se non si sa in anticipo quanti argomenti verranno passati alla funzione. Si può usare l'attributo  arguments.length per determinare il numero degli argomenti realmente passati alla funzione, per poi accedere a ciascuno di essi usando l'oggetto arguments.

+ +

Prendiamo, per esempio, una funzione che unisca più stringhe. Il solo argomento formale previsto per la funzione è una stringa che specifica i caratteri da usare per separare le singole voci. La funzione viene definita così:

+ +
function myConcat(separator) {
+   var result = "", // initialize list
+       i;
+   // iterate through arguments
+   for (i = 1; i < arguments.length; i++) {
+      result += arguments[i] + separator;
+   }
+   return result;
+}
+
+ +

È possibile passare una quantità qualsiasi di argomenti alla funzione e la funzione comporrà una stringa testuale contenente tutti gli argomenti passati:

+ +
// returns "red, orange, blue, "
+myConcat(", ", "red", "orange", "blue");
+
+// returns "elephant; giraffe; lion; cheetah; "
+myConcat("; ", "elephant", "giraffe", "lion", "cheetah");
+
+// returns "sage. basil. oregano. pepper. parsley. "
+myConcat(". ", "sage", "basil", "oregano", "pepper", "parsley");
+
+ +
+

Nota: La variabile arguments è simile ad un array (  "array-like" ), ma non è un array. È simile ad un array poichè ha un indice numerato ed una proprietà length. Tuttavia, non possiede tutti i metodi di manipolazione degli array.

+
+ +

Vedi l'oggetto Function nella JavaScript reference, per avere maggiori informazioni.

+ +

I parametri di una funzione

+ +

A partire da ECMAScript 6, esistono due nuovi tipi di parametri: i parametri di default e i parametri rest.

+ +

I parametri di default

+ +

In JavaScript, i parametri di una funzione hanno come valore di default undefined. Tuttavia, in alcune situazioni potrebbe essere utile impostare un diverso valore di default. In questo, possono aiutare i parametri di default.

+ +

In passato, la strategia comune per impostare i valori di default era quella di verificare i valori dei parametri, all'interno del corpo della funzione, ed assegnare loro un valore, nel caso fossero stati undefined. Se nell'esempio seguente non venisse passato, durante la chiamata, alcun valore per b, il suo valore sarebbe undefined, anche quando venisse valutata l'istruzione a*b, e la chiamata a multiply restituirebbe NaN ( Not a Number ). Tuttavia, questo valore viene definito nella seconda riga:

+ +
function multiply(a, b) {
+  b = typeof b !== 'undefined' ?  b : 1;
+
+  return a*b;
+}
+
+multiply(5); // 5
+
+ +

Con i parametri di deafult, la verifica all'interno del corpo della funzione non è più necessaria. Ora, è possibile mettere 1 come valore di default per b nella dichiarazione della funzione:

+ +
function multiply(a, b = 1) {
+  return a*b;
+}
+
+multiply(5); // 5
+ +

Per maggiori dettagli, vedi paremetri di default nella Javascript reference.

+ +

I parametri Rest

+ +

La sintassi dei rest parameter permette di rappresentare un indefinito numero di argomenti come un array. Nell'esempio, usiamo i parametri rest per rappresentare l'insieme degli argomenti composto dagli argomenti successivi al primo ( a partire dal secondo argomento fino alla fine ). Poi, moltiplichiamo ciascun argomento dell'insieme per il primo. Questo esempio utilizza una funzione a freccia, che verrà introdotta nella prossima sezione.

+ +
function multiply(multiplier, ...theArgs) {
+  return theArgs.map(x => multiplier * x);
+}
+
+var arr = multiply(2, 1, 2, 3);
+console.log(arr); // [2, 4, 6]
+ +

Le funzioni a freccia

+ +

Una espressione di funzione a freccia ( nota anche come fat arrow function ) ha una sintassi più stringata rispetto alle espressioni di funzione e forza, lessicalmente, il valore di this. Le funzioni a freccia sono sempre anonime. Vedi anche il post di hacks.mozilla.org: "ES6 In Depth: Arrow functions".

+ +

Sono due i fattori che influenzarono l'introduzione delle funzioni a freccia: la brevità delle funzioni ed il this lessicale.

+ +

Funzioni più brevi

+ +

In alcuni modelli funzionali, funzioni più brevi sono le benvenute. Paragoniamo le due istruzioni seguenti:

+ +
var a = [
+  "Hydrogen",
+  "Helium",
+  "Lithium",
+  "Beryl­lium"
+];
+
+var a2 = a.map(function(s){ return s.length });
+var a3 = a.map( s => s.length );
+ +

Il this lessicale

+ +

Until arrow functions, every new function defined its own this value (a new object in case of a constructor, undefined in strict mode function calls, the context object if the function is called as an "object method", etc.). This proved to be annoying with an object-oriented style of programming.

+ +
function Person() {
+  // The Person() constructor defines `this` as itself.
+  this.age = 0;
+
+  setInterval(function growUp() {
+    // In nonstrict mode, the growUp() function defines `this`
+    // as the global object, which is different from the `this`
+    // defined by the Person() constructor.
+    this.age++;
+  }, 1000);
+}
+
+var p = new Person();
+ +

In ECMAScript 3/5, this issue was fixed by assigning the value in this to a variable that could be closed over.

+ +
function Person() {
+  var self = this; // Some choose `that` instead of `self`.
+                   // Choose one and be consistent.
+  self.age = 0;
+
+  setInterval(function growUp() {
+    // The callback refers to the `self` variable of which
+    // the value is the expected object.
+    self.age++;
+  }, 1000);
+}
+ +

Alternatively, a bound function could be created so that the proper this value would be passed to the growUp() function.

+ +

Arrow functions capture the this value of the enclosing context, so the following code works as expected.

+ +
function Person(){
+  this.age = 0;
+
+  setInterval(() => {
+    this.age++; // |this| properly refers to the person object
+  }, 1000);
+}
+
+var p = new Person();
+ +

Predefined functions

+ +

JavaScript has several top-level, built-in functions:

+ +
+
{{jsxref("Global_Objects/eval", "eval()")}}
+
+

The eval() method evaluates JavaScript code represented as a string.

+
+
{{jsxref("Global_Objects/uneval", "uneval()")}} {{non-standard_inline}}
+
+

The uneval() method creates a string representation of the source code of an {{jsxref("Object")}}.

+
+
{{jsxref("Global_Objects/isFinite", "isFinite()")}}
+
+

The global isFinite() function determines whether the passed value is a finite number. If needed, the parameter is first converted to a number.

+
+
{{jsxref("Global_Objects/isNaN", "isNaN()")}}
+
+

The isNaN() function determines whether a value is {{jsxref("Global_Objects/NaN", "NaN")}} or not. Note: coercion inside the isNaN function has interesting rules; you may alternatively want to use {{jsxref("Number.isNaN()")}}, as defined in ECMAScript 6, or you can use typeof to determine if the value is Not-A-Number.

+
+
{{jsxref("Global_Objects/parseFloat", "parseFloat()")}}
+
+

The parseFloat() function parses a string argument and returns a floating point number.

+
+
{{jsxref("Global_Objects/parseInt", "parseInt()")}}
+
+

The parseInt() function parses a string argument and returns an integer of the specified radix (the base in mathematical numeral systems).

+
+
{{jsxref("Global_Objects/decodeURI", "decodeURI()")}}
+
+

The decodeURI() function decodes a Uniform Resource Identifier (URI) previously created by {{jsxref("Global_Objects/encodeURI", "encodeURI")}} or by a similar routine.

+
+
{{jsxref("Global_Objects/decodeURIComponent", "decodeURIComponent()")}}
+
+

The decodeURIComponent() method decodes a Uniform Resource Identifier (URI) component previously created by {{jsxref("Global_Objects/encodeURIComponent", "encodeURIComponent")}} or by a similar routine.

+
+
{{jsxref("Global_Objects/encodeURI", "encodeURI()")}}
+
+

The encodeURI() method encodes a Uniform Resource Identifier (URI) by replacing each instance of certain characters by one, two, three, or four escape sequences representing the UTF-8 encoding of the character (will only be four escape sequences for characters composed of two "surrogate" characters).

+
+
{{jsxref("Global_Objects/encodeURIComponent", "encodeURIComponent()")}}
+
+

The encodeURIComponent() method encodes a Uniform Resource Identifier (URI) component by replacing each instance of certain characters by one, two, three, or four escape sequences representing the UTF-8 encoding of the character (will only be four escape sequences for characters composed of two "surrogate" characters).

+
+
{{jsxref("Global_Objects/escape", "escape()")}} {{deprecated_inline}}
+
+

The deprecated escape() method computes a new string in which certain characters have been replaced by a hexadecimal escape sequence. Use {{jsxref("Global_Objects/encodeURI", "encodeURI")}} or {{jsxref("Global_Objects/encodeURIComponent", "encodeURIComponent")}} instead.

+
+
{{jsxref("Global_Objects/unescape", "unescape()")}} {{deprecated_inline}}
+
+

The deprecated unescape() method computes a new string in which hexadecimal escape sequences are replaced with the character that it represents. The escape sequences might be introduced by a function like {{jsxref("Global_Objects/escape", "escape")}}. Because unescape() is deprecated, use {{jsxref("Global_Objects/decodeURI", "decodeURI()")}} or {{jsxref("Global_Objects/decodeURIComponent", "decodeURIComponent")}} instead.

+
+
+ +

{{PreviousNext("Web/JavaScript/Guide/Loops_and_iteration", "Web/JavaScript/Guide/Expressions_and_Operators")}}

diff --git a/files/it/web/javascript/guide/grammar_and_types/index.html b/files/it/web/javascript/guide/grammar_and_types/index.html new file mode 100644 index 0000000000..2a43d5230d --- /dev/null +++ b/files/it/web/javascript/guide/grammar_and_types/index.html @@ -0,0 +1,659 @@ +--- +title: Grammatica e tipi +slug: Web/JavaScript/Guida/Grammar_and_types +translation_of: Web/JavaScript/Guide/Grammar_and_types +--- +
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Introduction", "Web/JavaScript/Guide/Control_flow_and_error_handling")}}
+ +

Questo capitolo tratta la sintassi di base di JavaScript, le dichiarazioni di variabili, i tipi di dati e i letterali.

+ +

Nozioni di base

+ +

JavaScript mutua molta della sua sintassi da Java, ma è anche influenzato da Awk, Perl e Python.

+ +

JavaScript è sensibile al maiuscolo-minuscolo (case-sensitive) e usa l'insieme di caratteri Unicode.

+ +

In JavaScript, le istruzioni sono separate da punto e vigola (;). Spazi, tabulazioni e caratteri di a capo sono chiamati spazi bianchi. Il testo sorgente di uno script JavaScript viene analizzato da sinistra verso destra ed è convertito in una sequenza di elementi di input che sono: token, caratteri di controllo, terminatori di linea, commenti o spazi bianchi. ECMAScript definisce anche determinate parole chiave e letterali e ha delle regole per l'inserimento automatico dei punti e virgola (ASI) per chiudere le istruzioni. Tuttavia si raccomanda di aggiungere sempre un punto e virgola per terminare ogni istruzione, questo eviterà effetti collaterali. Per maggiori informazioni si veda il riferimento dettagliato riguardo la lexical grammar di JavaScript.

+ +

Commenti

+ +

La sintassi dei commenti è la stessa di quelli del C++ e di molti altri linguaggi:

+ +
// una linea di commento
+
+/* questo è un commento più lungo,
+   occupa più linee
+ */
+
+/* Però non puoi /* annidare i commenti */ SyntaxError */
+ +

Dichiarazioni

+ +

Ci sono tre tipi di dichiarazioni in JavaScript.

+ +
+
{{jsxref("Statements/var", "var")}}
+
Dichiarazione di una variabile, opzionalmente inizializzata ad un valore.
+
{{experimental_inline}} {{jsxref("Statements/let", "let")}}
+
Dichiarazione di una variabile locale con visibilità nel blocco, opzionalmente inizializzata ad un valore.
+
{{experimental_inline}} {{jsxref("Statements/const", "const")}}
+
Dichiarazione di una costante in sola lettura con un nome.
+
+ +

Variabili

+ +

Le variabili sono nomi simbolici da usare nelle applicazioni in luogo dei valori che rappresentano. I nomi delle variabili, chiamati  {{Glossary("Identifier", "identificatori")}}, devono seguire certe regole di scrittura.

+ +

Un identificatore JavaScript deve iniziare con una lettera, un trattino basso (_) o segno del dollaro ($), mentre i caratteri successivi possono anche essere le cifre (0-9). Siccome JavaScript è case-sensitive, le lettere includono i caratteri da "A" fino a "Z" (maiuscoli) e i caratteri da "a" fino a "z" (minuscoli).

+ +

Si possono usare anche le lettere ISO 8859-1 o Unicode come per esempio å e ü negli identificatori. Possono essere usate anche le sequenze di escape di Unicode come caratteri negli identificatori.

+ +

Alcuni esempi di nomi leciti sono Number_hits, temp99 e _name.

+ +

Dichiarazione di variabili

+ +

Una variabile può essere dichiarata in tre modi:

+ + + +

Valutazione delle variabili

+ +

Una variabile dichiarata usando le istruzioni  var o let senza nessun valore iniziale specificato ha il valore {{jsxref("undefined")}}.

+ +

Il tentativo di accedere ad una variabile non dichiarata o di accedere ad un identificatore dichiarato con l'istruzione let, prima di una sua inizializzazione, provocherà un'eccezione di {{jsxref("ReferenceError")}}:

+ +
var a;
+console.log("Il valore di a è " + a); // Scrive nel log "Il valore di a è undefined"
+
+console.log("Il valore di b è " + b); // Solleva una eccezione ReferenceError
+
+console.log("Il valore di c è " + c); // Scrive nel log "Il valore di c è undefined" 
+var c;
+
+console.log("Il valore di x è " + x); // Solleva una eccezione ReferenceError: x is not defined
+let x;
+ +

Si può usare undefined per determinare se una variabile ha un valore oppure no. Nel codice seguente alla variabile input non è stato assegnato un valore e la condizione dell'istruzione if è

+ +

valuta a true.

+ +
var input;
+if(input === undefined){
+  faiQuesto();
+} else {
+  faiQuello();
+}
+
+ +

Il valore undefined si comporta come false quando viene usato in un contesto booleano. Ad esempio il codice seguente esegue la funzione miaFunzione perché l'elemento di mioArray non è definito:

+ +
var mioArray = [];
+if (!mioArray[0]) miaFunzione();
+
+ +

Il valore undefined viene convertito in NaN quando viene usato in un contesto numerico.

+ +
var a;
+a + 2;  // Viene valutato a NaN
+ +

Quando viene valutata una variabile {{jsxref("null")}}, il valore null si comporta come 0 in un contesto numerico e false in un contesto booleano. Per esempio:

+ +
var n = null;
+console.log(n * 32); // Visualizzera nella console 0
+
+ +

Visibilità delle variabili

+ +

Quando una variabile viene dichiarata fuori da una qualsiasi funzione viene chiamata variabile globale, poiché è disponibile  in tutto il codice nel documento corrente. Quando invece la variabile viene dichiarata in una funzione viene chiamata variabile locale, perché è disponibile soltanto all'interno di quella funzione.

+ +

JavaScript prima di ECMAScript 2015 non aveva una visibilità a livello di blocco; piuttosto una variabile dichiarata all'interno di un blocco era locale alla funzione (o al contesto globale) in cui il blocco risiedeva. Per esempio il seguente codice scriverà nel log 5, perché la visibilità di x è la funzione (o il contesto globale) all'interno del quale x viene dichiarata e non il blocco, che in questo caso è l'istruzione if.

+ +
if (true) {
+  var x = 5;
+}
+console.log(x);  // 5
+
+ +

Il comportamento cambia quando si usa l'istruzione let introdotta in ECMAScript 2015.

+ +
if (true) {
+  let y = 5;
+}
+console.log(y);  // ReferenceError: y non è definita
+
+ +

Sollevamento delle variabili

+ +

Un'altra cosa inusuale riguardo le variabili in JavaScript è che si può fare riferimento ad una variabile dichiarata più avanti nello script senza causare una eccezione. Questo concetto è conosciuto come innalzamento (hoisting); le variabili in JavaScript sono in un certo senso "sollevate" o spostate all'inizio della definizione del corpo della funzione o dell'istruzione. Tuttavia le variabili che sono state sollevate ritornano il valore undefined. Dunque se viene usata (o si fa riferimento ad) una variabile prima che venga dichiarata questa ritornà undefined.

+ +
/**
+ * Esempio 1
+ */
+console.log(x === undefined); // visualizza "true" nel log
+var x = 3;
+
+/**
+ * Esempio 2
+ */
+var myvar = "mio valore";
+
+(function() {
+  console.log(myvar); // visualizza "undefined" nel log
+  var myvar = "valore locale";
+})();
+
+ +

L'esempio sopra sarà interpretato nello stesso modo di:

+ +
/**
+ * Esempio 1
+ */
+var x;
+console.log(x === undefined); // visualizza nel log "true"
+x = 3;
+
+/**
+ * Esempio 2
+ */
+var myvar = "mio valore";
+
+(function() {
+  var myvar;
+  console.log(myvar); // undefined
+  myvar = "valore locale";
+})();
+
+ +

Per via dell'innalzamento, tutte le istruzioni var in una funzione dovrebbero essere posizionate prima di ogni altra istruzione che vada a definire una funzione. Questa buona pratica incrementa la chiarezza del codice.

+ +

In ECMAScript 2015, let (const) non solleverà/sposterà la variabile all'inizio della dichiarazione del blocco, dunque un riferimento alla variabile nel blocco prima che questa venga dichiarata risulterà in un'eccezione di {{jsxref("ReferenceError")}}. La variabile si dice in una "zona temporale morta" ("temporal dead zone") dall'inizio del blocco fino alla a che non si incontri la sua dichiarazione.

+ +
console.log(x); // Solleverà un'eccezione ReferenceError
+let x = 3
+ +

Sollevamento delle Funzioni

+ +

Nel caso delle funzioni, solo la dichiarazione della funzione verrà spostata all'inizio. Se la funzione viene introdotta da un'espressione, in questo caso non verrà spostata.

+ +
/* Function declaration */
+
+foo(); // "bar"
+
+function foo() {
+  console.log("bar");
+}
+
+
+/* Function expression */
+
+baz(); // TypeError: baz is not a function
+
+var baz = function() {
+  console.log("bar2");
+};
+ +

Variabli globali

+ +

Le variabili globali sono in effetti proprietà dell'oggetto globale. Nelle pagine web l'oggetto globale è {{domxref("window")}} quindi è possibile impostare e accedere alle variabili globali usando la sintassi window.variabile.

+ +

Di conseguenza è possibile accedere a variabili globali dichiarate in una finestra o un frame da un'altra finestra o frame specificando il nome della finestra o del frame. Per esempio, se una variabile chiamata numeroDiTelefono è dichiarata in un documento, è possibile far riferimento a questa variabile dall'interno di un iframe come parent.numeroDiTelefono.

+ +

Costanti

+ +

È possibile creare una costante in sola lettura dandole un nome usando la parola chiave {{jsxref("Statements/const", "const")}}. La sintassi di un identificatore di costante è la stessa di un identificatore di variabile: deve iniziare con una lettera, trattino basso (_) o segno del dollaro ($) e può contenere caratteri alfabetici, numerici o trattini bassi.

+ +
const PI = 3.14;
+
+ +

Una costante non può cambiare il suo valore attraverso ulteriori assegnazioni o essere ridichiarata mentre lo script è in esecuzione. Deve anche essere inizializzata ad un valore.

+ +

Le regole di visibilità per le costanti sono le stesse di quelle per le variabil con visibilità al livello di blocco dichiarate con l'istruzione let. Se la parola chiave const viene omessa si assume che l'identificatore rappresenta una variabile.

+ +

Non è possibile dichiarare una costante con lo stesso nome di una funzione o di una variabile nello stesso spazio di visibilità. Per esempio:

+ +
// QUESTO CAUSERÀ UN ERRORE
+function f() {};
+const f = 5;
+
+// ANCHE QUESTO CAUSERÀ UN ERRORE
+function f() {
+  const g = 5;
+  var g;
+
+  //istruzioni
+}
+
+ +

Strutture dati e tipi

+ +

Tipi di dato

+ +

L'ultimo standard ECMAScript definisce sette tipi di dati:

+ + + +

Sebbene questi tipi di dati siano relativamente pochi questi permettono di eseguire funzioni utili nelle applicazioni. {{jsxref("Object", "Objects")}} e {{jsxref("Function", "functions")}} sono altri elementi fondamentali nel linguaggio. Si può pensatre agli oggetti come a contenitori con un nome per dei valori e alle funzioni come a procedure che l'applicazione può compiere.

+ +

Conversione dei tipi dei dati

+ +

JavaScript è un linguaggio con tipi assegnati dinamicamente. Questo significa che non si va a specificare il tipo di dato che una variabile conterrà quando viene dichiarata e anche che il tipo di un dato viene convertito automaticamente a seconda delle necessità durante l'esecuzione dello script. Così, per esempio, si può definire una variabile come segue:

+ +
var risposta = 42;
+
+ +

E più avanti è possibile assegnare alla stessa variabile un valore testo (stringa), per esempio:

+ +
risposta = "Grazie per tutti i pesci...";
+
+ +

Poiché in JavaScript i tipi si assegnano dinamicamente questa assegnazione non causerà un messaggio di errore.

+ +

Nelle espressioni che coinvolgono valori numerici e stringhe con l'operatore + JavaScript converte i valori numerici in stringhe. Per esempio si considerino le seguenti istruzioni:

+ +
x = "La risposta è " + 42 // "La risposta è 42"
+y = 42 + " è la risposta" // "42 è la risposta"
+
+ +

In istruzioni che coinvolgono altri operatori JavaScript non converte valori numerici in stringa. Per esempio:

+ +
"37" - 7 // 30
+"37" + 7 // "377"
+
+ +

Conversione delle stringhe in numeri

+ +

Nel caso in cui il valore che rappresenta un numero è memorizzato come stringa ci sono dei metodi per eseguire la conversione:

+ + + +

parseInt ritornerà soltanto numeri interi,  ha una utilità ridotta per i numeri decimali. In aggiunta è buona pratica nell'uso di parseInt includere il parametro base, questo parametro è usato per specificare quale sistema di numerazione deve essere usato.

+ +

Un metodo alternativo per recuperare un numero da un testo è di usare l'operatore + (più unario):

+ +
"1.1" + "1.1" = "1.11.1"
+(+"1.1") + (+"1.1") = 2.2
+// Note: le parentesi sono aggiunte per chiarezza, non sono richieste.
+ +

Letterali

+ +

I letterali sono usati per rappresentare i valori in JavaScript. Questi sono valori fissati, non variabili, che venvono letteralmente inseriti nello script. Questa sezione descrive i seguenti tipi di letterali:

+ + + +

Letterali di array

+ +

Un letterale di array è un elenco di zero o più espressioni ognuna delle quali rappresenta un elemento dell'array, inclusa in parentesi quadre ([]). Quando si crea un array usando un letterale l'array stesso viene inizializzato con i valori specificati come elementi, la sua lunghezza è impostata al numero di elementi specificati.

+ +

Il seguente esempio crea un array tipiDiCaffe con tre elementi e una lunghezza di tre:

+ +
var tipiDiCaffe = ["French Roast", "Colombian", "Kona"];
+
+ +
+

Nota: Un letterale di array è un tipo di inizializzatore di oggetto. Vedi Usando inizializzatori di Oggetti.

+
+ +

Se un array viene creato usando un letterale in uno script top-level, JavaScript interpreta l'array ogni volta che valuta l'espressione che contiene l'array letterale. In aggiunta l'array letterale usato in una funzione viene creato ogni volta che la funzione viene chiamata.

+ +

Gli array letterali sono anche oggetti Array. Si veda {{jsxref("Array")}} e Collezione indicizzata per i dettagli sugli oggetti Array.

+ +

Virgole aggiuntive negli array letterali

+ +

Non è obbligatorio specificare tutti gli elementi in un array letterale. Mettendo due virgole in fila l'array viene creato con il valore undefined per gli elementi non specificati. Il seguente esempio crea l'array pesce:

+ +
var pesce = ["Leone", , "Angelo"];
+
+ +

Questo array ha due elementi con un valore e un elemento vuoto (pesce[0] is "Leone", pesce[1] è undefined, e pesce[2] è "Angelo").

+ +

Inserendo una virgola in fondo alla lista degli elementi la virgola stessa verrà ignorata. Nel seguente esempio la lunghezza dell'array è tre, non c'è un miaLista[3]. Tutte le altre virgole nell'elenco indicano un elemento nuovo.

+ +
+

Nota: Le virgole in coda possono creare errori nelle versioni più vecchie dei browser ed è buona pratica rimuoverle.

+
+ +
var miaLista = ['casa', , 'scuola', ];
+
+ +

Nel seguente esempio la lunghezza dell'array è quattro e miaLista[0] e mialista[2] sono mancanti.

+ +
var miaLista = [ , 'casa', , 'scuola'];
+
+ +

Nel seguente esempio la lunghezza dell'array è quattro e mialista[1] e miaLista[3] sono mancanti. Soltanto l'ultima virgola viene ignorata.

+ +
var miaLista = ['casa', , 'scuola', , ];
+
+ +

Comprendere il comportamento delle virgole in più è importante per comprendere JavaScript come linguaggio, in ogni caso nella scrittura del codice: è buona norma dichiarare esplicitamente gli elementi mancanti come undefined, questo migliorerà la chiarezza e la manutenibilità del codice.

+ +

Letterali di booleani

+ +

Il tipo Boolean ha due valori letterali: true e false.

+ +

Non vanno confusi i valori primitivi Booleani true e false con i valori true e false dell'oggetto Boolean. L'oggetto Boolean è un involucro intorno al tipo primitivo Booleano. Vedi {{jsxref("Global_Objects/Boolean", "Boolean")}} per maggiori informazioni.

+ +

Letterali di numeri Interi

+ +

Gli interi possono essere rappresentati in decimale (base 10), esadecimale (base 16), ottale (base 8) e binario (base 2).

+ + + +

Alcuni esempi i di letterali di interi sono:

+ +
0, 117 and -345 (decimale, base 10)
+015, 0001 and -0o77 (ottale, base 8)
+0x1123, 0x00111 and -0xF1A7 (esadecimale, "hex" o base 16)
+0b11, 0b0011 and -0b11 (binario, base 2)
+
+ +

Per maggiori informazioni, vedi Numeric literals in the Lexical grammar reference.

+ +

Letterali di numeri in virgola-mobile

+ +

Un letterale per un numero in virgola mobile può avere le seguenti parti:

+ + + +

La parte esponente è una "e" o "E" seguita da un intero che può essere con segno (preceduto da "+" o "-"). Un numero in virgola mobile deve avere almeno una cifra e un punto oppure una "e" (o "E").

+ +

Più concisamente la sintassi è:

+ +
[(+|-)][cifre][.cifre][(E|e)[(+|-)]cifre]
+
+ +

Per esempio:

+ +
3.1415926
+-.123456789
+-3.1E+12
+.1e-23
+
+ +

Letterali di oggetti

+ +

Un letterale di un oggetto è una lista di zero o più coppie di nomi di proprietà e valori associati di un oggetto racchiusi in parentesi graffe ({}). Non andrebbe usato un letterale di un oggetto all'inizio di una istruzione, questo porterà ad un errore o non si comporterà come ci si aspetta perché { sarà interpretata come l'inizio di un blocco.

+ +

Quello seguente è un esempio di un letterale di un oggetto. Il primo elemento dell'oggetto automobile definisce un proprietà, miaAutomobile, e gli assegna il testo "Saturn"; il secondo elemento, la proprietà getAutomobile, è immediatamente assegnata al valore risultante dall'invocazione della funzione (tipiDiAutomobile("Honda")); il terzo elemento, la proprietà speciale, usa una variabile esistente (saldi).

+ +
var saldi = "Toyota";
+
+function tipiDiAutomobile(nome) {
+  if (nome === "Honda") {
+    return nome;
+  } else {
+    return "Spiacente, noi non vendiamo " + nome + ".";
+  }
+}
+
+var automobile = { miaAutomobile: "Saturn", getAutomobile: tipiDiAutomobile("Honda"), speciale: saldi };
+
+console.log(automobile.miaAutomobile);   // Saturn
+console.log(automobile.getAutomobile);  // Honda
+console.log(automobile.speciale); // Toyota
+
+ +

In aggiunta si possono usare letterali di tipo numerico o testo come nome di una proprietà o annidare un oggetto dentro un altro. Il seguente esempio usa queste opzioni.

+ +
var automobile = { molteAutomobili: {a: "Saab", "b": "Jeep"}, 7: "Mazda" };
+
+console.log(automobile.molteAutomobili.b); // Jeep
+console.log(automobile[7]); // Mazda
+
+ +

I nomi delle proprietà degli oggetti possono essere un testo qualsiasi, incluso il testo vuoto. Se il nome della proprietà non è un {{Glossary("Identifier","identifier")}} JavaScript valido o un numero dovrà essere racchiuso tra virgolette. I nomi di proprietà che non sono identificatori validi non possono neanche essere acceduti usando il punto (.), potranno però essere acceduti e impostati usando la notazione analoga a quella degli array ("[]").

+ +
var nomiDiProprietaInusuali = {
+  "": "Una stringa vuota",
+  "!": "Bang!"
+}
+console.log(nomiDiProprietaInusuali."");   // SyntaxError: Unexpected string
+console.log(nomiDiProprietaInusuali[""]);  // Una stringa vuota
+console.log(nomiDiProprietaInusuali.!);    // SyntaxError: Unexpected token !
+console.log(nomiDiProprietaInusuali["!"]); // Bang!
+ +

In ES2015, i letterali di oggetti sono estesi per supportare l'impostazione del prototipo al momento della costruzione, forme abbreviate per le assegnazioni tipo foo: foo, definizioni di metodi, eseguire chiamate a super e calcolare il nome di proprietà con espressioni. Nel'insieme queste aggiunte avvicinano i letterali di oggetti e le dichiarazioni delle classi permettendo quindi di beneficiare di alcune delle stesse comodità della progettazione orientata agli oggetti.

+ +
var obj = {
+    // __proto__
+    __proto__: theProtoObj,
+    // Abbreviazione per ‘handler: handler’
+    handler,
+    // Metodi
+    toString() {
+     // Super calls
+     return "d " + super.toString();
+    },
+    // Nomi di proprietà calcolati (dinamici)
+    [ 'prop_' + (() => 42)() ]: 42
+};
+ +

Nota che:

+ +
var foo = {a: "alpha", 2: "two"};
+console.log(foo.a);    // alpha
+console.log(foo[2]);   // two
+//console.log(foo.2);  // Error: missing ) after argument list
+//console.log(foo[a]); // Error: a is not defined
+console.log(foo["a"]); // alpha
+console.log(foo["2"]); // two
+
+ +

Letterali di RegExp

+ +

Un letterale di espressione regolare (RegExp) è un modello (pattern) racchiuso tra barre. il seguente è un esempio di un letterale di una espressione regolare.

+ +
var re = /ab+c/;
+ +

Letterali di stringhe

+ +

Un letterale di testo (stringa nel preguo del testo) è formato da zero o più caratteri racchiusi tra virgolette doppie  (") o singole (').  Una stringa deve essere delimitata da virgolette dello stesso tipo; cioè o entrambe singole o entrambe doppie. I seguenti sono esempi di leterali di testo:

+ +
"foo"
+'bar'
+"1234"
+"una linea \n altra linea"
+"prima dell'una"
+
+ +

È possibile chiamare qualsiasi metodo dell'oggetto String su una stringa —JavaScript converte automaticamente la stringa in un oggetto temporaneo di tipo String, chiama il metodo, poi elimina l'oggetto temporaneo. È anche possibile usare la proprietà String.length con una stringa letterale:

+ +
console.log("John's cat".length)
+// Stamperà il numero di simboli nel testo inclusi gli spazi.
+// In questo caso 10.
+
+ +

In ES2015 sono disponibili i letterali modello. I letterali modello sono racchiusi tra accenti gravi (` `)  (accento grave) anziché apici doppi o singoli. Le stringhe modello fornisco dello "zucchero sintattico" per la costruzione delle stringhe. È simile all'interpolazione delle stringhe di Perl, Python e altri. Opzionalmente, un'etichetta può essere aggiunta per permettere la personalizzazione nella costruzione della stringa, evitare gli attacchi per injection o costruire strutture dati di livello più alto dal contenuto di una stringa.

+ +
// Creazione di un letterale string di base
+`In JavaScript '\n' is a line-feed.`
+
+// Stringa multilinea
+`In JavaScript this is
+ not legal.`
+
+// Interpolazione di stringhe
+var name = "Bob", time = "today";
+`Hello ${name}, how are you ${time}?`
+
+// La costruzione di un prefisso di richiesta HTTP è usata per interpretare le sostituzioni e le costruzioni
+POST`http://foo.org/bar?a=${a}&b=${b}
+     Content-Type: application/json
+     X-Credentials: ${credentials}
+     { "foo": ${foo},
+       "bar": ${bar}}`(myOnReadyStateChangeHandler);
+ +

Si dovrebbero usare i letterali stringa a meno che non ci sia specifico bisogno di usare un oggetto String. Si veda {{jsxref("String")}} per dettagli sull'oggetto String.

+ +

Uso di caratteri speciali nelle stringhe

+ +

Oltre ai caratteri ordinari si possono includere anche dei caratteri speciali nelle stringhe come mostrato nel seguente esempio.

+ +
"prima linea \n seconda linea"
+
+ +

La seguente tabella elenca i caratteri speciali che possono essere usati nelle stringhe JavaScript.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table: JavaScript caratteri speciali
CarattereSignificato
\0Byte null
\bBackspace
\fForm feed
\nNew line
\rCarriage return
\tTab
\vTab verticale
\'Apostrofo o virgoletta singola
\"Virgoletta doppia
\\Il carattere backslash
\XXXIl carattere con la codifica Latin-1 specificata da fino a tre caratteri XXX tra 0 e 377. Per esempio \251 è la sequenza ottale per il simbolo di copyright.
\xXXIl carattere con la codifica Latin-1 specificata da due cifre esadecimali XX comprese tra 00 e FF. Per esempio \xA9 è la sequenza ottale per il simbolo di copyright.
\uXXXXIl carattere Unicode specificato da quattro cifre esadecimali XXXX. Per esempio \u00A9 è la sequenza Unicode per il simbolo di copyright. Vedi Unicode escape sequences.
\u{XXXXX}Escape per Unicode code point. Per esempio \u{2F804} è la stessa cosa dell'esape semplice Unicode \uD87E\uDC04.
+ +

Caratteri a cui aggiungere il backslash (Escaping)

+ +

Per i caratteri non elencati nella tabella un backslash (\) prefisso viene ignorato, questo uso è deprecato e devrebbe essere evitato.

+ +

Le virgolette possono essere inserite in una stringa precedendole da un backslash. Questo è noto come escaping delle virgolette. Per esempio:

+ +
var quote = "Lui legge \"The Cremation of Sam McGee\" by R.W. Service.";
+console.log(quote);
+
+ +

Il risultato sarebbe:

+ +
Lui legge "The Cremation of Sam McGee" by R.W. Service.
+
+ +

Per includere un backslash in una stringa va fatto l'esape del carattere backslash. Per esempio, per assegnare il percorso c:\temp ad una stringa, usare il seguente:

+ +
var home = "c:\\temp";
+
+ +

Si può anche fare l'escape delle interruzioni di linea precedendole con un backslash. Sia il backslash che l'interruzione di linea saranno rimosse dal valore della stringa.

+ +
var str = "questa stringa \
+è spezzata \
+attraverso multiple\
+linee."
+console.log(str);   // questa stringa è spezzata attraverso multiple linee.
+
+ +

Sebbene JavaScript non abbia una sintassi tipo "heredoc", è possibile fare qualcosa di simile aggiungendo una sequenza di escape per "a capo" e facendo l'escape dell'a capo alla fine della linea:

+ +
var poem =
+"Roses are red,\n\
+Violets are blue.\n\
+I'm schizophrenic,\n\
+And so am I."
+
+ +

Ulteriori informazioni

+ +

Questo capitolo si concentra sulla sintassi di base per i tipi e le dichiarazioni. Per imparare di più riguardo i costrutti del linguaggio JavaScript vedi anche i seguenti capitoli in questa guida:

+ + + +

Nel prossimo capitolo, tratteremo i costrutti del controllo del flusso e la gestione degli errori.

+ +

{{PreviousNext("Web/JavaScript/Guide/Introduction", "Web/JavaScript/Guide/Control_flow_and_error_handling")}}

diff --git a/files/it/web/javascript/guide/index.html b/files/it/web/javascript/guide/index.html new file mode 100644 index 0000000000..ba956f21f2 --- /dev/null +++ b/files/it/web/javascript/guide/index.html @@ -0,0 +1,124 @@ +--- +title: JavaScript Guide +slug: Web/JavaScript/Guida +tags: + - AJAX + - JavaScript + - JavaScript_Guide + - NeedsTranslation + - TopicStub +translation_of: Web/JavaScript/Guide +--- +
{{jsSidebar("JavaScript Guide")}}
+ +

La Guida JavaScript mostra come utilizzare JavaScript e offre una panoramica del linguaggio. Se hai bisogno di informazioni esaustive su una sua funzione, dai un'occhiata alle reference JavaScript.

+ +

Capitoli

+ +

Questa guida è divisa in vari capitoli:

+ + + + + + + + + +

{{Next("Web/JavaScript/Guide/Introduction")}}

diff --git a/files/it/web/javascript/guide/introduction/index.html b/files/it/web/javascript/guide/introduction/index.html new file mode 100644 index 0000000000..3825ded91c --- /dev/null +++ b/files/it/web/javascript/guide/introduction/index.html @@ -0,0 +1,140 @@ +--- +title: Introduzione +slug: Web/JavaScript/Guida/Introduzione +tags: + - Guida + - JavaScript +translation_of: Web/JavaScript/Guide/Introduction +--- +
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide", "Web/JavaScript/Guide/Grammar_and_types")}}
+ +

Questo capitolo introduce JavaScript e discute alcuni dei suoi concetti fondamentali.

+ +

Che cosa dovresti già sapere

+ +

Questa guida parte dal presupposto che tu abbia già queste nozioni di base:

+ + + +

Dove trovare informazioni su JavaScript

+ +

La documentazione JavaScript su MDN comprende:

+ + + +

Se sei nuovo di JavaScript, inizia con gli articoli presenti in Capire il web e nella  Guida JavaScript. Quando avrai una chiara comprensione dei fondamentali, potrai usare il  Riferimento JavaScript per apprendere maggiori dettagli su singoli oggetti e parti del linguaggio.

+ +

Che cos'è JavaScript?

+ +

JavaScript è un linguaggio di scripting cross-platform e object-oriented. È un linguaggio piccolo e leggero. All interno di un ambiente ospite (ad esempio un web browser), JavaScript può essere connesso agli oggetti del suo ambiente per fornire controllo programmatico su di essi.

+ +

JavaScript contiene una libreria standard di oggetti come Array, Date e Math, ed una serie di elementi base del linguaggio come operatori, strutture di controllo e dichiarazioni. La base di JavaScript può essere estesa per una varietà di scopi fornendogli oggetti aggiuntivi; ad esempio:

+ + + +

JavaScript e Java

+ +

JavaScript e Java sono simili per certi aspetti, ma fondamentalmente diversi per altri. Il linguaggio JavaScript assomiglia a Java ma non ha la tipizzazione statica ed il controllo forte dei tipi di Java. JavaScript segue larga parte della sintassi delle espressioni di Java, la convenzione sui nomi ed i principali costrutti di controllo di flusso, e questa è la ragione per cui è stato rinominato da LiveScript a JavaScript.
+ A differenza del sistema di classi costruito dalle dichiarazione a tempo di compilazione di Java, JavaScript supporta un sistema runtime basato su un piccolo numero di tipi di dato che rappresentano valori Booleani, numerici e di tipo stringa. JavaScript dispone di un modello ad oggetti basato su prototype al posto del più comune modello ad oggetti basato su classi. Il modello prototype-based fornisce ereditarietà dinamica; che significa che ciò che viene ereditato può variare per singoli oggetti. JavaScript inoltre supporta funzioni senza speciali requisiti dichiarativi. Le funzioni possono essere proprietà di oggetti, eseguite come metodi debolmente tipizzati.

+ +

JavaScript è un linguaggio con un formalismo molto libero se confrontato a Java. Non è necessario dichiarare tutte le variabili, classi e metodi. Non ci si deve preoccupare se i metodi sono public, privare e protected, e non è necessario implementare interfacce. Variabili, parametri e valori di ritorno delle funzioni non sono tipizzati in modo esplicito.

+ +

Java è un linguaggio di programmazione basato su classi progettato per essere veloce e con un controllo dei tipi rigoroso. Con controllo dei tipi rigoroso si intende per esempio, che non è possibile forzare un intero Java in un riferimento ad oggetto o accedere alla memoria privata corrompendo i bytecodes Java. Il modello basato sulle classi di Java significa che i programmi sono composti esclusivamente da classi con i propri metodi. L'ereditarietà delle classi di Java e la tipizzazione forte di solito richiedono gerarchie di oggetti strettamente definite. Questi requisiti rendono la programmazione di Java più complessa rispetto alla programmazione di JavaScript.

+ +

D'altra parte, JavaScript si ispira ad una linea di linguaggi più piccoli, tipizzati dinamicamente come HyperTalk e dBASE. Questi linguaggi di scripting offrono strumenti di programmazione ad un pubblico più vasto grazie alla loro sintassi più facile, alle funzionalità specializzate predefinite nel linguaggio, ed ai minimi requisiti per la creazione di oggetti.

+ + + + + + + + + + + + + + + + + + + + + + + +
JavaScript confrontato con Java
JavaScriptJava
+

Orientato ad oggetti. Non c'è distinzione tra tipi di oggetti. Ereditarietà con il meccanismo dei prototype e le proprietà ed i metodi possono essere aggiunti ad ogni oggetto dinamicamente.

+
+

Basato su classi. Gli oggetti vengono distinti in classi ed istanze con tutta l'ereditarietà costruita con lagerarchia delle classi. Classi ed istanze non possono avere proprietà o metodi aggiunti dinamicamente.

+
Le variabili ed i tipi non sono dichiarati (tipizzazione dinamica).Le variabili ed i tipi di dato devono essere dichiarati (tipizzazione statica).
Non si può scrivere automaticamente suk disco fisso.Si può scrivere automaticamente su disco fisso.
+ +

Per maggiori informazioni sulle differenze tra JavaScript e Java, vedi il capitolo Dettagli sul modello ad oggetti.

+ +

JavaScript e le specifiche ECMAScript

+ +

JavaScript è standardizzato da Ecma International — l'associazione Europea per la standardizzazione dei sisteni di comunicazione ed informazione (ECMA è l'acronimo di European Computer Manufacturers Association) per distribuire linguaggio di programmazione standardizzato ed internazionale basato su JavaScript. Questa versione standardizzata di JavaScript, chiamata ECMAScript, si comporta alla stesso modo in tutte le applicazioni che supportano lo standard. Le aziende possono usare il linguaggo standard aperto per svilupare le proprie implementazioni di JavaScript. Lo standard ECMAScript è documentato nelle specifiche ECMA-262. Consulta Novità in JavaScript per conoscere di più sulle differenti versioni di JavaScript e delle edizioni delle specifiche ECMAScript.

+ +

Lo standard ECMA-262 è anche approvato da ISO (International Organization for Standardization) come ISO-16262. Si possono trovare le specifiche nel sito Ecma internazionale. Le specifiche ECMAScript non descrivono il Document Object Model (DOM), che viene standardizzato dal World Wide Web Consortium (W3C). Il DOM definisce il modo in cui gli oggetti di un documento HTML vengono esposti al tuo script. Per farti un'idea migliore sulle differenti tecnologie che si usano quando si programma con JavaScript, consulta l'articolo Panoramicha delle tecnologie JavaScript.

+ +

Documentazione JavaScript a confronto con le specifiche ECMAScript

+ +

Le specifiche ECMAScript sono una serie di requisiti per implementare ECMAScript; sono utili per chi desidera implementare funzionalità compatibili con lo standard del linguaggio nella propria implementazione di ECMAScript (come SpiderMonkey in Firefox, o v8 in Chrome).

+ +

La documentazione ECMAScript non è indirizzata ad aiutare i programmatori di script; usa la documentazione di JavaScript per informazioni su come scrivere script.

+ +

Le specifiche ECMAScript usano terminologie e sintassi che possono risultare non  familiari ai programmatori JavaScript Sebbene la descrizione del linguaggio possa essere diversa in ECMAScript, il linguaggio in se rimane lo stesso. JavaScript supporta tutte le funzionalità descritte nelle specifiche ECMAScript.

+ +

La documentazione JavaScript descrive aspetti del linguaggio che sono appropriati per il programmatore JavaScript.

+ +

Iniziare con JavaScript

+ +

Iniziare con JavaScript è facile: la sola cosa che serve è un Web browser moderno. Questa guida include alcune funzionalità di JavaScript che sono attualmente disponibili solo nell'ultima versione di Firefox, per questo raccomandiamo di usare la versione più recente di Firefox.

+ +

In Firefox sono presenti due strumenti che sono utili per sperimentare con JavaScript: la Console Web ed il Blocco per gli appunti.

+ +

La Console Web

+ +

La Console Web espone informazioni sulla pagina Web attualmente caricata, ed include una command line che si può usare per eseguire espressioni nella pagina corrente.

+ +

Per aprire la Console Web (Ctrl+Shift+K), scegli "Console web" dal menu "Sviluppo web", che si trova nel menu "Strumenti" di Firefox. Essa appare sotto la finestra del browser. Alla fine della console è presente la linea di comando che si può usare per inserire comandi JavaScript ed il risultato compare nel pannello soprastante:

+ +

+ +

Blocco per gli appunti

+ +

La Console Web è magnifica per eseguire singole linee di JavaScript, ma sebbene si possano eseguire linee multiple, non è molto comoda per questo e non è possibile salvare i propri esempi di codice con la Console Web. Quindi per esempi più complessi di codice il Blocco per gli appunti è uno strumento migliore.

+ +

Per aprire il Blocco per gli appunti (Shift+F4), scegli "Blocco per gli appunti" dal menu "Sviluppo web", che si trova nel menu "Strumenti" di Firefox. Si apre in una finestra separata ed un editor che puoi usare per scrivere ed eseguire JavaScript nel browser. Si possono anche salvare scripts nel disco e caricare scripts salvati.

+ +

+ +

Hello world

+ +

Per iniziare a scrivere programmi JavaScript, apri il Blocco per gli appunti e scrivi il tuo primo codice "Hello world" JavaScript:

+ +
function greetMe(yourName) {
+  alert("Hello " + yourName);
+}
+
+greetMe("World");
+
+ +

Seleziona il codice nel blocco e premi Ctrl+R per vedere il risultato nel browser!

+ +

Nelle prossime pagine, questa guida ti itrodurra alla sintassi di JavaScript ed alle caratteristiche del linguaggio, in questo modo sarai in grado di scrivere applicazioni più complesse.

+ +

{{PreviousNext("Web/JavaScript/Guide", "Web/JavaScript/Guide/Grammar_and_types")}}

diff --git a/files/it/web/javascript/guide/iterators_and_generators/index.html b/files/it/web/javascript/guide/iterators_and_generators/index.html new file mode 100644 index 0000000000..49b220cdd1 --- /dev/null +++ b/files/it/web/javascript/guide/iterators_and_generators/index.html @@ -0,0 +1,162 @@ +--- +title: Iteratori e generatori +slug: Web/JavaScript/Guida/Iteratori_e_generatori +translation_of: Web/JavaScript/Guide/Iterators_and_Generators +--- +
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Details_of_the_Object_Model", "Web/JavaScript/Guide/Meta_programming")}}
+ +

Processare ognuno degli elementi in una collezione è un'operazione molto comune. JavaScript fornisce tutta una serie di costrutti per iterare una collezione di elementi, dai semplici cicli {{jsxref("Statements/for","for")}} a {{jsxref("Global_Objects/Array/map","map()")}} e {{jsxref("Global_Objects/Array/filter","filter()")}}. Iterators e Generators portano il concetto di iterazione direttamente al cuore del linguaggio e forniscono un meccanismo per personalizzare i cicli {{jsxref("Statements/for...of","for...of")}}.

+ +

Per maggiori dettagli, vedi anche:

+ + + +

Iterators

+ +

Un oggetto è un iterator quando sa come accedere agli elementi di una collezione uno per volta, conservando l'informazione sulla sua posizione corrente nella sequenza. In Javascript un iterator è un oggetto che implementa il metodo next() , il quale ritorna l'elemento successivo della sequenza. Questo metodo ritorna un oggetto con due proprietà: done evalue.

+ +

Una volta che è stato creato, un iterator può essere utlizzato esplicitamente chiamando più volte il metodo next().

+ +
function makeIterator(array) {
+    var nextIndex = 0;
+
+    return {
+       next: function() {
+           return nextIndex < array.length ?
+               {value: array[nextIndex++], done: false} :
+               {done: true};
+       }
+    };
+}
+ +

Una volta che un iterator è stato inizializzato, il metodonext() può essere chiamato per accedere a coppie chiave-valore dall'oggetto ritornato:

+ +
var it = makeIterator(['yo', 'ya']);
+console.log(it.next().value); // 'yo'
+console.log(it.next().value); // 'ya'
+console.log(it.next().done);  // true
+ +

Generators

+ +

Nonostante implementare un iterator possa essere utile, richiede una considerevole attenzione nella programmazione a causa del bisogno esplicito di mantenere lo stato interno dell'iteratore. I {{jsxref("Global_Objects/Generator","Generators","","true")}} forniscono una potente alternativa: ti permettono di definire un algoritmo iterativo scrivendo una singola funzione in grado di mantenere il proprio stato.

+ +

Una GeneratorFunction è uno speciale tipo di funzione che opera come una "fabbrica" di iterators. Quando viene eseguita ritorna un nuovo oggetto Generator. Una funzione diventa una GeneratorFunction se usa la sintassi {{jsxref("Statements/function*","function*")}}.

+ +
function* idMaker() {
+  var index = 0;
+  while(true)
+    yield index++;
+}
+
+var gen = idMaker();
+
+console.log(gen.next().value); // 0
+console.log(gen.next().value); // 1
+console.log(gen.next().value); // 2
+// ...
+ +

Iterables

+ +

Un oggetto è un iterable se definisce un comportamento di iterazione, come per esempio quali valori sono considerati in un costrutto {{jsxref("Statements/for...of", "for...of")}}. Alcuni tipi built-in di Javascript (come {{jsxref("Array")}} o {{jsxref("Map")}}) hanno un comportamento predefinito, mentre altri tipi (come {{jsxref("Object")}}) non ce l'hanno.

+ +

Affinché un oggetto possa essere considerato un iterable deve implementare il metodo @@iterator, cioè l'oggetto (o uno degli oggetti che lo precedono nella catena dei prototipi) deve avere una proprietà con una chiave {{jsxref("Symbol.iterator")}}.

+ +

Iterables definiti dall'utente

+ +

Possiamo creare i nostri iterables in questo modo:

+ +
var myIterable = {};
+myIterable[Symbol.iterator] = function* () {
+    yield 1;
+    yield 2;
+    yield 3;
+};
+
+for (let value of myIterable) {
+    console.log(value);
+}
+// 1
+// 2
+// 3
+
+or
+
+[...myIterable]; // [1, 2, 3]
+
+ +

Iterables Built-in

+ +

{{jsxref("String")}}, {{jsxref("Array")}}, {{jsxref("TypedArray")}}, {{jsxref("Map")}} e {{jsxref("Set")}} sono tutti iterables built-in nel linguaggio, perché i loro oggetti prototipi hanno tutti un metodo {{jsxref("Symbol.iterator")}}.

+ +

Sintassi che si aspettano degli iterables

+ +

Alcuni costrutti ed espressioni si aspettano degli iterables, per esempio il ciclo {{jsxref("Statements/for...of","for-of")}}, la {{jsxref("Operators/Spread_operator","sintassi spread","","true")}}, {{jsxref("Operators/yield*","yield*")}}, e l'{{jsxref("Operators/Destructuring_assignment","assegnamento di destrutturazione","","true")}}.

+ +
for (let value of ['a', 'b', 'c']) {
+    console.log(value);
+}
+// "a"
+// "b"
+// "c"
+
+[...'abc']; // ["a", "b", "c"]
+
+function* gen() {
+  yield* ['a', 'b', 'c'];
+}
+
+gen().next(); // { value: "a", done: false }
+
+[a, b, c] = new Set(['a', 'b', 'c']);
+a; // "a"
+
+
+ +

Generators avanzati

+ +

I generators calcolano i loro valori solo quando vengono effettivamente richiesti, il che gli permette di rappresentare sequenze che sono troppo onerose da calcolare, o perfino sequenze infinite, come nella funzione idMaker().

+ +

Il metodo {{jsxref("Global_Objects/Generator/next","next()")}} accetta anche un valore che può essere utilizzato per modificare lo stato interno di un generatore. Un valore passato a next() sarà trattato come il risultato dell'ultima espressione yield che ha messo in pausa il generator.

+ +

Ecco un generator che produce una sequenza di numeri di Fibonacci. In questo generator il metodonext(x) può essere utilizzato per reinizializzare la sequenza:

+ +
function* fibonacci() {
+  var fn1 = 0;
+  var fn2 = 1;
+  while (true) {
+    var current = fn1;
+    fn1 = fn2;
+    fn2 = current + fn1;
+    var reset = yield current;
+    if (reset) {
+        fn1 = 0;
+        fn2 = 1;
+    }
+  }
+}
+
+var sequence = fibonacci();
+console.log(sequence.next().value);     // 0
+console.log(sequence.next().value);     // 1
+console.log(sequence.next().value);     // 1
+console.log(sequence.next().value);     // 2
+console.log(sequence.next().value);     // 3
+console.log(sequence.next().value);     // 5
+console.log(sequence.next().value);     // 8
+console.log(sequence.next(true).value); // 0
+console.log(sequence.next().value);     // 1
+console.log(sequence.next().value);     // 1
+console.log(sequence.next().value);     // 2
+ +

Puoi forzare un generator a lanciare una eccezione chiamando il suo metodo {{jsxref("Global_Objects/Generator/throw","throw()")}} e passandogli il valore che dovrebbe lanciare. Questa eccezione sarà lanciata dal corrente context sospeso del generator, come se lo yield che è attualmente sospeso fosse invece una dichiarazione throw value.

+ +

Se non si incontra uno yield durante la risoluzione della eccezione lanciata, allora l'eccezione si propagherà fino alla chiamata athrow(), e in tutte le successive chiamate a next() la proprietà done saràtrue.

+ +

I generators hanno un metodo {{jsxref("Global_Objects/Generator/return","return(value)")}} che ritorna un valore e termina il generator stesso.

+ +

{{PreviousNext("Web/JavaScript/Guide/Details_of_the_Object_Model", "Web/JavaScript/Guide/Meta_programming")}}

diff --git a/files/it/web/javascript/guide/loops_and_iteration/index.html b/files/it/web/javascript/guide/loops_and_iteration/index.html new file mode 100644 index 0000000000..c677151181 --- /dev/null +++ b/files/it/web/javascript/guide/loops_and_iteration/index.html @@ -0,0 +1,340 @@ +--- +title: Cicli e iterazioni +slug: Web/JavaScript/Guida/Loops_and_iteration +tags: + - Guide + - JavaScript + - Loop + - Sintassi +translation_of: Web/JavaScript/Guide/Loops_and_iteration +--- +
{{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Control_flow_and_error_handling", "Web/JavaScript/Guide/Functions")}}
+ +

I cicli offrono un modo semplice e rapido per fare cose ripetutamente. Questo capitolo della guida al JavaScript introduce i diversi metodi di iterazione disponibili in JavaScript.

+ +

Si può pensare al loop come ad una versione computerizzata di un gioco dove si dice a qualcuno di andare X passi in una direzione e Y passi in un'atra; per esempio "vai 5 passi a est" può essere espresso in questo modo con un loop:

+ +
var passi;
+for (passi = 0; passi < 5; passi++) {
+  // Viene eseguito 5 volte, con un valore di passi che va da 0 a 4.
+  console.log('Fai un passo verso est');
+}
+
+ +

Ci sono differenti tipi di ciclo, ma sono essenzialmente tutti la stessa cosa: ripetono un'azione o un insieme di azioni un certo numero di volte (è possibile che questo numero sia anche 0).

+ +

I diversi meccanismi di ciclo offrono differenti modi di determinare l'inizio e la fine del ciclo. Ci sono casi che si prestano più ad un tipo di ciclo rispetto ad altri.

+ +

Le istruzioni per i loop foriti in JavaScript sono:

+ + + +

Istruzione for

+ +

Il {{jsxref("statements/for","ciclo for")}} continua finché la condizione valutata non è falsa. Il fir loop JavaScript è simile a quello del Java e de C. L'istruzione for è definita come segue:

+ +
for ([espressioneIniziale]; [condizione]; [incremento])
+  istruzione
+
+ +

Quando viene eseguito un ciclo for, questo è ciò che accade:

+ +
    +
  1. espressioneIniziale, se esiste, viene eseguita. L'espressione di solito inizializza uno o più indici, ma la sintassi permette di scrivere espressioni con diversi gradi di compessità. Questa espressione può anche dichiarare delle variabili.
  2. +
  3. La condizione viene verificata. Se il suo valore è true, l'espressione istruzione viene eseguita. Se invece condizione è false, il ciclo finisce. Se condizione è omessa, l'espressione si assume sia true.
  4. +
  5. istruzione viene esguita. Per eseguire diverse istruzioni, è necessario usare il blocco ({ ... }) per raggrupparle.
  6. +
  7. Viene incrementata la l'espressione incremento, se esiste, eseguita, e il ciclo for va al passo successivo.
  8. +
+ +

Esempio

+ +

Il seguente esempio contiene un ciclo for che conta il numero di opzioni selezionate in una lista a scorrimento (a {{HTMLElement("select")}} che permette selezioni multiple). L'istruzione for dichiara una variabile i e la inizializza a zero. Controlla che i sia minore del numero di opzioni dell'elemento <select> , esegue l'istruzione if e incrementa i di uno alla fine di ogni ciclo.

+ +
<form name="selectForm">
+  <p>
+    <label for="musicTypes">Choose some music types, then click the button below:</label>
+    <select id="musicTypes" name="musicTypes" multiple="multiple">
+      <option selected="selected">R&B</option>
+      <option>Jazz</option>
+      <option>Blues</option>
+      <option>New Age</option>
+      <option>Classical</option>
+      <option>Opera</option>
+    </select>
+  </p>
+  <p><input id="btn" type="button" value="Quanti sono selezionati?" /></p>
+</form>
+
+<script>
+function howMany(selectObject) {
+  var numberSelected = 0;
+  for (var i = 0; i < selectObject.options.length; i++) {
+    if (selectObject.options[i].selected) {
+      numberSelected++;
+    }
+  }
+  return numberSelected;
+}
+
+var btn = document.getElementById("btn");
+btn.addEventListener("click", function(){
+  alert('Number of options selected: ' + howMany(document.selectForm.musicTypes))
+});
+</script>
+
+
+ +

Istruzione do...while

+ +

Il ciclo {{jsxref("statements/do...while", "do...while")}} si ripete finché la condizione non è falsa. Il do...while è viene definito come segue:

+ +
do
+  istruzione
+while (condizione);
+
+ +

l'istruzione viene eseguita una volta prima che la condizione venga controllata. Per eseguire più istruzioni, è necessario usare il blocco ({ ... }) . Se la condizione è vera l'istruzione viene eseguita nuovamente. Alla fine di ogni esecuzione di istruzione, condizione viene controllata. Quando condizione è falsa l'esecuzione del ciclo do..while termina.

+ +

Esempio

+ +

Nel seguente esempio il ciclo do..while itera almeno una volta e continua finché il valore di i è minore di 5.

+ +
var i = 0;
+do {
+  i += 1;
+  console.log(i);
+} while (i < 5);
+ +

Istruzione while

+ +

Il ciclo {{jsxref("statements/while","while")}} esegue un'istruzione fino a quando una condizione è true. Ecco un esempio si un ciclo while:

+ +
while (condizione)
+  istruzione   //...statement
+
+ +

Se condizione diventa false, istruzione non viene eseguita a si passa ad eseguire i comandi successivi.

+ +

Durante il ciclo condizione viene testata prima di eseguire istruzione. Se condizione è true, istruzione viene esguita e condizione viene verificata nuovamente. Se condizione è false il ciclo di ferma e viene eseguito il codice successivo al ciclo while.

+ +

Per eseguire istruzioni multiple, è necessario usare il blocco ({ ... }) così da raggruppare le istruzioni.

+ +

Esempio 1

+ +

Il seguente esempio di ciclo while si ripete fino a quando n è minore di tre:

+ +
var n = 0;
+var x = 0;
+while (n < 3) {
+  n++;
+  x += n;
+}
+
+ +

Ad ogni iterazione, il ciclo incrementa n e aggiunge quel valore a x. Pertanto,x e n assumono i seguenti valori:

+ + + +

Dopo aver completato il terzo passaggio, la condizione n < 3 non è più vera, quindi il ciclo termina.

+ +

Esempio 2

+ +

Evita loop infiniti. Assicurati che la condizione in un loop alla fine diventi falsa; altrimenti, il ciclo non terminerà mai. Le istruzioni nel seguente ciclo while vengono eseguite per sempre perché la condizione non diventa mai falsa:

+ +
+
//I loop infiniti non vanno affatto bene
+while (true) {
+  console.log("Buongiorno, Mondo");
+}
+
+ +

Istruzione "etichettata"

+ +

Un {{jsxref("statements/label","label")}} fornisce un'istruzione con un identificatore che ti consente di fare riferimento ad esso altrove nel tuo programma. Ad esempio, è possibile utilizzare un'etichetta per identificare un ciclo e quindi utilizzare le istruzioni breakcontinue per indicare se un programma deve interrompere il loop o continuare la sua esecuzione.

+ +

La sintassi dell'istruzione etichettata è simile alla seguente:

+ +
label :
+   istruzione // statement
+
+ +

Il valore dell'etichetta label può essere qualsiasi identificatore JavaScript che non sia una parola riservata. L'affermazione che ti identifichi con un'etichetta statement può essere una qualsiasi affermazione.

+ +

Esempio

+ +

In questo esempio, la label markLoop identifica un ciclo while.

+ +
markLoop:
+while (theMark == true) {
+   doSomething();
+}
+ +

Istruzione break

+ +

Utilizzare l'istruzione {{jsxref("statements/break","break")}} per terminare un ciclo, uno switch o in congiunzione con un'istruzione etichettata.

+ + + +

La sintassi dell'istruzione break è simile a questa:

+ +
break [label];
+
+ +

La prima forma della sintassi termina il ciclo switch di chiusura più interno; la seconda forma della sintassi termina l'istruzione dell'etichettata specificata.

+ +

Esempio 1

+ +

L'esempio seguente esegue iterazioni attraverso gli elementi di un array (una matrice) fino a quando non trova l'indice di un elemento il cui valore è theValue:

+ +
for (var i = 0; i < a.length; i++) {
+  if (a[i] == theValue) {
+    break;
+  }
+}
+ +

Esempio 2: Breaking to a label - Interruzione su un'etichetta

+ +
var x = 0;
+var z = 0;
+labelCancelLoops: while (true) {
+  console.log("Outer loops: " + x);
+  x += 1;
+  z = 1;
+  while (true) {
+    console.log("Inner loops: " + z);
+    z += 1;
+    if (z === 10 && x === 10) {
+      break labelCancelLoops;
+    } else if (z === 10) {
+      break;
+    }
+  }
+}
+ +

Istruzione continue

+ +

The {{jsxref("statements/continue","continue")}} statement can be used to restart a while, do-while, for, or label statement.

+ + + +

La sintassi dell'istruzione continue ha il seguente aspetto:

+ +
continue [label];
+
+ +

Esempio 1

+ +

L'esempio seguente mostra un ciclo while con un'istruzione continue che viene eseguita quando il valore di i è tre. Quindi, n assume i valori uno, tre, sette e dodici.

+ +
var i = 0;
+var n = 0;
+while (i < 5) {
+  i++;
+  if (i == 3) {
+    continue;
+  }
+  n += i;
+}
+ +

Esempio 2

+ +

Una dichiarazione etichettata checkiandj contiene una dichiarazione etichettata checkj. Se si incontra continue il programma termina l'iterazione corrente di checkj e inizia la successiva iterazione. Ogni volta che si incontra continue, checkj viene reiterato finché la condizione non restituisce false. Quando viene restituito false, il resto dell'istruzione checkiandj è completato e checkiandj reiterate fino a quando la condizione non restituisce false. Quando viene restituito false, il programma continua con la seguente istruzione checkiandj.

+ +

Se continue ha un'etichetta di checkiandj, il programma continuerà nella parte superiore del checkiandj istruzione.

+ +
var i = 0;
+var j = 10;
+checkiandj:
+  while (i < 4) {
+    console.log(i);
+    i += 1;
+    checkj:
+      while (j > 4) {
+        console.log(j);
+        j -= 1;
+        if ((j % 2) == 0) {
+          continue checkj;
+        }
+        console.log(j + ' is odd.');
+      }
+      console.log('i = ' + i);
+      console.log('j = ' + j);
+}
+ +

Istruzione for...in

+ +

L'istruzione {{jsxref("statements/for...in","for...in")}} itera una variabile specificata su tutte le proprietà enumerabili di un oggetto. Per ogni proprietà distinta, JavaScript esegue le istruzioni specificate. L'istruzione for...in ha il seguente aspetto:

+ +
for (variabile in oggetto) {
+  istruzione
+}
+// for (variable in object) {
+//  statements
+// }
+
+ +

Esempio

+ +

La seguente funzione prende come argomento un oggetto e il nome dell'oggetto. Quindi itera su tutte le proprietà dell'oggetto e restituisce una stringa che elenca i nomi delle proprietà e i loro valori.

+ +
function dump_props(obj, obj_name) {
+  var result = "";
+  for (var i in obj) {
+    result += obj_name + "." + i + " = " + obj[i] + "<br>";
+  }
+  result += "<hr>";
+  return result;
+}
+
+ +

Per un oggetto car con proprietà make e model, result sarebbe:

+ +
car.make = Ford
+car.model = Mustang
+
+ +

Arrays / Matrici

+ +

Anche se può essere allettante usarla come un modo per iterare sugli elementi {{jsxref("Array")}} , l'istruzione the for...in restituirà il nome delle proprietà definite dall'utente oltre agli indici numerici. Quindi è meglio usare un ciclo tradizionale {{jsxref("statements/for","for")}} con un indice numerico quando si itera su array, perché l'istruzione for...in itera sulle proprietà definite dall'utente oltre agli elementi dell'array, se si modifica l'oggetto Array, (come ad esempio l'aggiunta di proprietà o metodi personalizzati).

+ +

Istruzione for...of

+ +

L'istruzione {{jsxref("statements/for...of","for...of")}} crea un ciclo che itera su oggetti iterabili (inclusi oggetti di tipo {{jsxref("Array")}}, {{jsxref("Map")}}, {{jsxref("Set")}}, {{jsxref("functions/arguments","arguments")}} e così via), richiamando un aggancio di iterazione personalizzato con istruzioni da eseguire per il valore di ogni proprietà distinta.

+ +
for (variabile di oggetto) {
+  istruzione
+}
+ +

Il seguente esempio mostra la differenza tra un ciclo for...of e un {{jsxref("statements/for...in","for...in")}} ciclo continuo. Mentre for...in itera sopra i nomi delle proprietà, for...of itera sui valori delle proprietà:

+ +
let arr = [3, 5, 7];
+arr.foo = "hello";
+
+for (let i in arr) {
+   console.log(i); // logs "0", "1", "2", "foo"
+}
+
+for (let i of arr) {
+   console.log(i); // logs "3", "5", "7"
+}
+ +

{{PreviousNext("Web/JavaScript/Guide/Control_flow_and_error_handling", "Web/JavaScript/Guide/Functions")}}

diff --git a/files/it/web/javascript/guide/regular_expressions/index.html b/files/it/web/javascript/guide/regular_expressions/index.html new file mode 100644 index 0000000000..f876045948 --- /dev/null +++ b/files/it/web/javascript/guide/regular_expressions/index.html @@ -0,0 +1,647 @@ +--- +title: Espressioni regolari +slug: Web/JavaScript/Guida/Espressioni_Regolari +translation_of: Web/JavaScript/Guide/Regular_Expressions +--- +
{{jsSidebar("Guida JavaScript")}} {{PreviousNext("Web/JavaScript/Guide/Text_formatting", "Web/JavaScript/Guide/Indexed_collections")}}
+ +

Le espressioni regolari sono schemi usati per confrontare combinazioni di caratteri nelle stringhe. In JavaScript, le espressioni regolari sono anche oggetti. Questi pattern sono usati con i metodi {{jsxref("RegExp.exec", "exec()")}} e {{jsxref("RegExp.test", "test()")}} della classe {{jsxref("RegExp")}}, e con i metodi {{jsxref("String.match", "match()")}},   {{jsxref("String.matchAll", "matchAll()")}}, {{jsxref("String.replace", "replace()")}}, {{jsxref("String.search", "search()")}}, e {{jsxref("String.split", "split()")}} della classe {{jsxref("String")}}. Questo capitolo descrive le espressioni regolari in JavaScript.

+ +

Creazione di un'espressione regolare

+ +

Puoi creare un'espressione regolare in uno dei seguenti modi:

+ + + +

Scrivere uno schema per espressioni regolari

+ +

Uno schema di espressione regolare è composto da caratteri semplici, come /abc/, o da una combinazione di caratteri semplici e speciali, come /ab*c//Chapter (\d+)\.\d*/. L'ultimo esempio include parentesi che sono usate come un dispositivo di memoria. Il confronto fatto con queste parti dello schema è ricordato per usi futuri, come descritto in  {{ web.link("#Using_parenthesized_substring_matches", "Using parenthesized substring matches") }}.

+ +
+

Nota: Se hai già familiarità con la struttura di un'espressione regolare, potresti anche leggere il cheatsheet per una rapida ricerca di un modello/costrutto specifico

+
+ +

Usare modelli semplici

+ +

I modelli semplici sono costituiti da carattrei per i quali si desidera trovare una corrispondenza diretta. Ad esempio, il modello /abc/ corrisponde solo quando esattamente i caratteri "abc" si presentano insieme e in quell'ordine. Una tale corrispondenza avrebbe successo nelle stringhe "Ciao, conosci il tuo abc?" e "Gli ultimi progetti di aeroplani si sono evoluti da slabcraft". In entrambi i casi la corrispondenza con la sottostringa "abc" avviene. Non c'è corrispondenza nella stringa "Grab crab" perché invece di contenere l'esatta sottostringa "abc" coniente la sottostringa "ab c".

+ +

Usare caratteri speciali

+ +

Quando la ricerca di una corrispondenza richiede qualcosa di più di una corrispondenza diretta, come la ricerca di una o più b o la ricerca di spazi bianchi, il modello include caratteri speciali. Ad esempio, per abbinare una singola "a" seguita da zero o più "b" seguita da "c", dovresti usare il modello /ab*c/: il * dopo "b" significa "0 o più occorrenze dell'elemento precedente". Nella stringa "cbbabbbbcdebc", questo modello corrisponderà alla sottostringa "abbbbc".
+
+ La tabella seguente fornisce un elenco completo e una descrizione dei caratteri speciali che possono essere utilizzati nelle espressioni regolari.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Caratteri speciali nelle espressioni regolari
CarattereSignificato/Utilizzo
\ +

Matches according to the following rules:
+
+ A backslash that precedes a non-special character indicates that the next character is special and is not to be interpreted literally. For example, a 'b' without a preceding '\' generally matches lowercase 'b's wherever they occur. But a '\b' by itself doesn't match any character; it forms the special word boundary character.
+
+ A backslash that precedes a special character indicates that the next character is not special and should be interpreted literally. For example, the pattern /a*/ relies on the special character '*' to match 0 or more a's. By contrast, the pattern /a\*/ removes the specialness of the '*' to enable matches with strings like 'a*'.
+
+ Do not forget to escape \ itself while using the RegExp("pattern") notation because \ is also an escape character in strings.

+
^Matches beginning of input. If the multiline flag is set to true, also matches immediately after a line break character.
+
+ For example, /^A/ does not match the 'A' in "an A", but does match the 'A' in "An E".
+
+ The '^' has a different meaning when it appears as the first character in a character set pattern. See complemented character sets for details and an example.
$ +

Matches end of input. If the multiline flag is set to true, also matches immediately before a line break character.

+ +

For example, /t$/ does not match the 't' in "eater", but does match it in "eat".

+
* +

Matches the preceding expression 0 or more times. Equivalent to {0,}.

+ +

For example, /bo*/ matches 'boooo' in "A ghost booooed" and 'b' in "A bird warbled", but nothing in "A goat grunted".

+
+ +

Matches the preceding expression 1 or more times. Equivalent to {1,}.

+ +

For example, /a+/ matches the 'a' in "candy" and all the a's in "caaaaaaandy", but nothing in "cndy".

+
?Matches the preceding expression 0 or 1 time. Equivalent to {0,1}.
+
+ For example, /e?le?/ matches the 'el' in "angel" and the 'le' in "angle" and also the 'l' in "oslo".
+
+ If used immediately after any of the quantifiers *, +, ?, or {}, makes the quantifier non-greedy (matching the fewest possible characters), as opposed to the default, which is greedy (matching as many characters as possible). For example, applying /\d+/ to "123abc" matches "123". But applying /\d+?/ to that same string matches only the "1".
+
+ Also used in lookahead assertions, as described in the x(?=y) and x(?!y) entries of this table.
+  
. +

(The decimal point) matches any single character except the newline character.

+ +

For example, /.n/ matches 'an' and 'on' in "nay, an apple is on the tree", but not 'nay'.

+
(x) +

Matches 'x' and remembers the match, as the following example shows. The parentheses are called capturing parentheses.
+
+ The '(foo)' and '(bar)' in the pattern /(foo) (bar) \1 \2/ match and remember the first two words in the string "foo bar foo bar". The \1 and \2 in the pattern match the string's last two words. Note that \1, \2, \n are used in the matching part of the regex. In the replacement part of a regex the syntax $1, $2, $n must be used, e.g.: 'bar foo'.replace( /(...) (...)/, '$2 $1' ).

+
(?:x)Matches 'x' but does not remember the match. The parentheses are called non-capturing parentheses, and let you define subexpressions for regular expression operators to work with. Consider the sample expression /(?:foo){1,2}/. If the expression was /foo{1,2}/, the {1,2} characters would apply only to the last 'o' in 'foo'. With the non-capturing parentheses, the {1,2} applies to the entire word 'foo'.
x(?=y) +

Matches 'x' only if 'x' is followed by 'y'. This is called a lookahead.

+ +

For example, /Jack(?=Sprat)/ matches 'Jack' only if it is followed by 'Sprat'. /Jack(?=Sprat|Frost)/ matches 'Jack' only if it is followed by 'Sprat' or 'Frost'. However, neither 'Sprat' nor 'Frost' is part of the match results.

+
x(?!y) +

Matches 'x' only if 'x' is not followed by 'y'. This is called a negated lookahead.

+ +

For example, /\d+(?!\.)/ matches a number only if it is not followed by a decimal point. The regular expression /\d+(?!\.)/.exec("3.141") matches '141' but not '3.141'.

+
x|y +

Matches either 'x' or 'y'.

+ +

For example, /green|red/ matches 'green' in "green apple" and 'red' in "red apple."

+
{n}Matches exactly n occurrences of the preceding expression. N must be a positive integer.
+
+ For example, /a{2}/ doesn't match the 'a' in "candy," but it does match all of the a's in "caandy," and the first two a's in "caaandy."
{n,m} +

Where n and m are positive integers and n <= m. Matches at least n and at most m occurrences of the preceding expression. When m is omitted, it's treated as ∞.

+ +

For example, /a{1,3}/ matches nothing in "cndy", the 'a' in "candy," the first two a's in "caandy," and the first three a's in "caaaaaaandy". Notice that when matching "caaaaaaandy", the match is "aaa", even though the original string had more a's in it.

+
[xyz]Character set. This pattern type matches any one of the characters in the brackets, including escape sequences. Special characters like the dot(.) and asterisk (*) are not special inside a character set, so they don't need to be escaped. You can specify a range of characters by using a hyphen, as the following examples illustrate.
+
+ The pattern [a-d], which performs the same match as [abcd], matches the 'b' in "brisket" and the 'c' in "city". The patterns /[a-z.]+/ and /[\w.]+/ match the entire string "test.i.ng".
[^xyz] +

A negated or complemented character set. That is, it matches anything that is not enclosed in the brackets. You can specify a range of characters by using a hyphen. Everything that works in the normal character set also works here.

+ +

For example, [^abc] is the same as [^a-c]. They initially match 'r' in "brisket" and 'h' in "chop."

+
[\b]Matches a backspace (U+0008). You need to use square brackets if you want to match a literal backspace character. (Not to be confused with \b.)
\b +

Matches a word boundary. A word boundary matches the position where a word character is not followed or preceeded by another word-character. Note that a matched word boundary is not included in the match. In other words, the length of a matched word boundary is zero. (Not to be confused with [\b].)

+ +

Examples:
+ /\bm/ matches the 'm' in "moon" ;
+ /oo\b/ does not match the 'oo' in "moon", because 'oo' is followed by 'n' which is a word character;
+ /oon\b/ matches the 'oon' in "moon", because 'oon' is the end of the string, thus not followed by a word character;
+ /\w\b\w/ will never match anything, because a word character can never be followed by both a non-word and a word character.

+ +
+

Note: JavaScript's regular expression engine defines a specific set of characters to be "word" characters. Any character not in that set is considered a word break. This set of characters is fairly limited: it consists solely of the Roman alphabet in both upper- and lower-case, decimal digits, and the underscore character. Accented characters, such as "é" or "ü" are, unfortunately, treated as word breaks.

+
+
\B +

Matches a non-word boundary. This matches a position where the previous and next character are of the same type: Either both must be words, or both must be non-words. The beginning and end of a string are considered non-words.

+ +

For example, /\B../ matches 'oo' in "noonday", and /y\B./ matches 'ye' in "possibly yesterday."

+
\cX +

Where X is a character ranging from A to Z. Matches a control character in a string.

+ +

For example, /\cM/ matches control-M (U+000D) in a string.

+
\d +

Matches a digit character. Equivalent to [0-9].

+ +

For example, /\d/ or /[0-9]/ matches '2' in "B2 is the suite number."

+
\D +

Matches any non-digit character. Equivalent to [^0-9].

+ +

For example, /\D/ or /[^0-9]/ matches 'B' in "B2 is the suite number."

+
\fMatches a form feed (U+000C).
\nMatches a line feed (U+000A).
\rMatches a carriage return (U+000D).
\s +

Matches a single white space character, including space, tab, form feed, line feed. Equivalent to [ \f\n\r\t\v\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff].

+ +

For example, /\s\w*/ matches ' bar' in "foo bar."

+
\S +

Matches a single character other than white space. Equivalent to [^ \f\n\r\t\v\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff].

+ +

For example, /\S\w*/ matches 'foo' in "foo bar."

+
\tMatches a tab (U+0009).
\vMatches a vertical tab (U+000B).
\w +

Matches any alphanumeric character including the underscore. Equivalent to [A-Za-z0-9_].

+ +

For example, /\w/ matches 'a' in "apple," '5' in "$5.28," and '3' in "3D."

+
\W +

Matches any non-word character. Equivalent to [^A-Za-z0-9_].

+ +

For example, /\W/ or /[^A-Za-z0-9_]/ matches '%' in "50%."

+
\n +

Where n is a positive integer, a back reference to the last substring matching the n parenthetical in the regular expression (counting left parentheses).

+ +

For example, /apple(,)\sorange\1/ matches 'apple, orange,' in "apple, orange, cherry, peach."

+
\0Matches a NULL (U+0000) character. Do not follow this with another digit, because \0<digits> is an octal escape sequence.
\xhhMatches the character with the code hh (two hexadecimal digits)
\uhhhhMatches the character with the code hhhh (four hexadecimal digits).
\u{hhhh}(only when u flag is set) Matches the character with the Unicode value hhhh (hexadecimal digits).
+ +

Escaping user input to be treated as a literal string within a regular expression can be accomplished by simple replacement:

+ +
function escapeRegExp(string){
+  return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
+}
+ +

Using parentheses

+ +

Parentheses around any part of the regular expression pattern cause that part of the matched substring to be remembered. Once remembered, the substring can be recalled for other use, as described in {{ web.link("#Using_parenthesized_substring_matches", "Using Parenthesized Substring Matches") }}.

+ +

For example, the pattern /Chapter (\d+)\.\d*/ illustrates additional escaped and special characters and indicates that part of the pattern should be remembered. It matches precisely the characters 'Chapter ' followed by one or more numeric characters (\d means any numeric character and + means 1 or more times), followed by a decimal point (which in itself is a special character; preceding the decimal point with \ means the pattern must look for the literal character '.'), followed by any numeric character 0 or more times (\d means numeric character, * means 0 or more times). In addition, parentheses are used to remember the first matched numeric characters.

+ +

This pattern is found in "Open Chapter 4.3, paragraph 6" and '4' is remembered. The pattern is not found in "Chapter 3 and 4", because that string does not have a period after the '3'.

+ +

To match a substring without causing the matched part to be remembered, within the parentheses preface the pattern with ?:. For example, (?:\d+) matches one or more numeric characters but does not remember the matched characters.

+ +

Lavorare con le espressioni regolari

+ +

Le espressioni regolari sono usate con i metodi test and exec di RegExp e con i metodi match, replace, search, and split di String .Questi metodi sono spiegati in dettaglio nelle  JavaScript reference.

+ +

Metodi che usano le espressioni regolari

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MetodoDescrizione
{{jsxref("RegExp.exec", "exec")}} +

Un metodo di RegExp che esegue una ricerca per una corrispondenza in una stringa. Ritorna un array di informazioni, o null se non trova corrispondenze.

+
{{jsxref("RegExp.test", "test")}}Un metodo di RegExp che testa le corrispondenze in una stinga. Ritorna true o false. 
{{jsxref("String.match", "match")}}Un metodo di String che esegue una ricerca per una corrispondenza in una stringa. Ritorna un array di informazioni, o null se non trova corrispondenze.
{{jsxref("String.search", "search")}}A String method that tests for a match in a string. It returns the index of the match, or -1 if the search fails.
{{jsxref("String.replace", "replace")}}A String method that executes a search for a match in a string, and replaces the matched substring with a replacement substring.
{{jsxref("String.split", "split")}}A String method that uses a regular expression or a fixed string to break a string into an array of substrings.
+ +

When you want to know whether a pattern is found in a string, use the test or search method; for more information (but slower execution) use the exec or match methods. If you use exec or match and if the match succeeds, these methods return an array and update properties of the associated regular expression object and also of the predefined regular expression object, RegExp. If the match fails, the exec method returns null (which coerces to false).

+ +

In the following example, the script uses the exec method to find a match in a string.

+ +
var myRe = /d(b+)d/g;
+var myArray = myRe.exec("cdbbdbsbz");
+
+ +

If you do not need to access the properties of the regular expression, an alternative way of creating myArray is with this script:

+ +
var myArray = /d(b+)d/g.exec("cdbbdbsbz"); // equivalent to "cdbbdbsbz".match(/d(b+)d/g);
+
+ +

If you want to construct the regular expression from a string, yet another alternative is this script:

+ +
var myRe = new RegExp("d(b+)d", "g");
+var myArray = myRe.exec("cdbbdbsbz");
+
+ +

With these scripts, the match succeeds and returns the array and updates the properties shown in the following table.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Results of regular expression execution.
ObjectProperty or indexDescriptionIn this example
myArrayThe matched string and all remembered substrings.["dbbd", "bb"]
indexThe 0-based index of the match in the input string.1
inputThe original string."cdbbdbsbz"
[0]The last matched characters."dbbd"
myRelastIndexThe index at which to start the next match. (This property is set only if the regular expression uses the g option, described in {{ web.link("#Advanced_searching_with_flags", "Advanced Searching With Flags") }}.)5
sourceThe text of the pattern. Updated at the time that the regular expression is created, not executed."d(b+)d"
+ +

As shown in the second form of this example, you can use a regular expression created with an object initializer without assigning it to a variable. If you do, however, every occurrence is a new regular expression. For this reason, if you use this form without assigning it to a variable, you cannot subsequently access the properties of that regular expression. For example, assume you have this script:

+ +
var myRe = /d(b+)d/g;
+var myArray = myRe.exec("cdbbdbsbz");
+console.log("The value of lastIndex is " + myRe.lastIndex);
+
+// "The value of lastIndex is 5"
+
+ +

However, if you have this script:

+ +
var myArray = /d(b+)d/g.exec("cdbbdbsbz");
+console.log("The value of lastIndex is " + /d(b+)d/g.lastIndex);
+
+// "The value of lastIndex is 0"
+
+ +

The occurrences of /d(b+)d/g in the two statements are different regular expression objects and hence have different values for their lastIndex property. If you need to access the properties of a regular expression created with an object initializer, you should first assign it to a variable.

+ +

Using parenthesized substring matches

+ +

Including parentheses in a regular expression pattern causes the corresponding submatch to be remembered. For example, /a(b)c/ matches the characters 'abc' and remembers 'b'. To recall these parenthesized substring matches, use the Array elements [1], ..., [n].

+ +

The number of possible parenthesized substrings is unlimited. The returned array holds all that were found. The following examples illustrate how to use parenthesized substring matches.

+ +

The following script uses the {{jsxref("String.replace", "replace()")}} method to switch the words in the string. For the replacement text, the script uses the $1 and $2 in the replacement to denote the first and second parenthesized substring matches.

+ +
var re = /(\w+)\s(\w+)/;
+var str = "John Smith";
+var newstr = str.replace(re, "$2, $1");
+console.log(newstr);
+
+ +

This prints "Smith, John".

+ +

Advanced searching with flags

+ +

Regular expressions have four optional flags that allow for global and case insensitive searching. These flags can be used separately or together in any order, and are included as part of the regular expression.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Regular expression flags
FlagDescription
gGlobal search.
iCase-insensitive search.
mMulti-line search.
yPerform a "sticky" search that matches starting at the current position in the target string. See {{jsxref("RegExp.sticky", "sticky")}}
+ +

To include a flag with the regular expression, use this syntax:

+ +
var re = /pattern/flags;
+
+ +

or

+ +
var re = new RegExp("pattern", "flags");
+
+ +

Note that the flags are an integral part of a regular expression. They cannot be added or removed later.

+ +

For example, re = /\w+\s/g creates a regular expression that looks for one or more characters followed by a space, and it looks for this combination throughout the string.

+ +
var re = /\w+\s/g;
+var str = "fee fi fo fum";
+var myArray = str.match(re);
+console.log(myArray);
+
+ +

This displays ["fee ", "fi ", "fo "]. In this example, you could replace the line:

+ +
var re = /\w+\s/g;
+
+ +

with:

+ +
var re = new RegExp("\\w+\\s", "g");
+
+ +

and get the same result.

+ +

The m flag is used to specify that a multiline input string should be treated as multiple lines. If the m flag is used, ^ and $ match at the start or end of any line within the input string instead of the start or end of the entire string.

+ +

Examples

+ +

The following examples show some uses of regular expressions.

+ +

Changing the order in an input string

+ +

The following example illustrates the formation of regular expressions and the use of string.split() and string.replace(). It cleans a roughly formatted input string containing names (first name first) separated by blanks, tabs and exactly one semicolon. Finally, it reverses the name order (last name first) and sorts the list.

+ +
// The name string contains multiple spaces and tabs,
+// and may have multiple spaces between first and last names.
+var names = "Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ; Chris Hand ";
+
+var output = ["---------- Original String\n", names + "\n"];
+
+// Prepare two regular expression patterns and array storage.
+// Split the string into array elements.
+
+// pattern: possible white space then semicolon then possible white space
+var pattern = /\s*;\s*/;
+
+// Break the string into pieces separated by the pattern above and
+// store the pieces in an array called nameList
+var nameList = names.split(pattern);
+
+// new pattern: one or more characters then spaces then characters.
+// Use parentheses to "memorize" portions of the pattern.
+// The memorized portions are referred to later.
+pattern = /(\w+)\s+(\w+)/;
+
+// New array for holding names being processed.
+var bySurnameList = [];
+
+// Display the name array and populate the new array
+// with comma-separated names, last first.
+//
+// The replace method removes anything matching the pattern
+// and replaces it with the memorized string—second memorized portion
+// followed by comma space followed by first memorized portion.
+//
+// The variables $1 and $2 refer to the portions
+// memorized while matching the pattern.
+
+output.push("---------- After Split by Regular Expression");
+
+var i, len;
+for (i = 0, len = nameList.length; i < len; i++){
+  output.push(nameList[i]);
+  bySurnameList[i] = nameList[i].replace(pattern, "$2, $1");
+}
+
+// Display the new array.
+output.push("---------- Names Reversed");
+for (i = 0, len = bySurnameList.length; i < len; i++){
+  output.push(bySurnameList[i]);
+}
+
+// Sort by last name, then display the sorted array.
+bySurnameList.sort();
+output.push("---------- Sorted");
+for (i = 0, len = bySurnameList.length; i < len; i++){
+  output.push(bySurnameList[i]);
+}
+
+output.push("---------- End");
+
+console.log(output.join("\n"));
+
+ +

Using special characters to verify input

+ +

In the following example, the user is expected to enter a phone number. When the user presses the "Check" button, the script checks the validity of the number. If the number is valid (matches the character sequence specified by the regular expression), the script shows a message thanking the user and confirming the number. If the number is invalid, the script informs the user that the phone number is not valid.

+ +

Within non-capturing parentheses (?: , the regular expression looks for three numeric characters \d{3} OR | a left parenthesis \( followed by three digits \d{3}, followed by a close parenthesis \), (end non-capturing parenthesis )), followed by one dash, forward slash, or decimal point and when found, remember the character ([-\/\.]), followed by three digits \d{3}, followed by the remembered match of a dash, forward slash, or decimal point \1, followed by four digits \d{4}.

+ +

The Change event activated when the user presses Enter sets the value of RegExp.input.

+ +
<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+    <meta http-equiv="Content-Script-Type" content="text/javascript">
+    <script type="text/javascript">
+      var re = /(?:\d{3}|\(\d{3}\))([-\/\.])\d{3}\1\d{4}/;
+      function testInfo(phoneInput){
+        var OK = re.exec(phoneInput.value);
+        if (!OK)
+          window.alert(phoneInput.value + " isn't a phone number with area code!");
+        else
+          window.alert("Thanks, your phone number is " + OK[0]);
+      }
+    </script>
+  </head>
+  <body>
+    <p>Enter your phone number (with area code) and then click "Check".
+        <br>The expected format is like ###-###-####.</p>
+    <form action="#">
+      <input id="phone"><button onclick="testInfo(document.getElementById('phone'));">Check</button>
+    </form>
+  </body>
+</html>
+
+ +
{{PreviousNext("Web/JavaScript/Guide/Text_formatting", "Web/JavaScript/Guide/Indexed_collections")}}
-- cgit v1.2.3-54-g00ecf From e7651b26abb2031118b797bd4a4d707aa7f2e9b6 Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Thu, 11 Feb 2021 14:47:54 +0100 Subject: unslug it: modify --- files/it/_redirects.txt | 378 ++- files/it/_wikihistory.json | 2860 ++++++++++---------- .../learn/css/building_blocks/selectors/index.html | 3 +- .../learn/css/first_steps/how_css_works/index.html | 3 +- .../index.html | 4 +- files/it/conflicting/learn/css/index.html | 3 +- .../learn/getting_started_with_the_web/index.html | 3 +- .../javascript_basics/index.html | 3 +- .../learn/javascript/objects/index.html | 3 +- .../learn/server-side/django/index.html | 3 +- files/it/conflicting/web/accessibility/index.html | 3 +- .../web/api/canvas_api/tutorial/index.html | 3 +- .../web/api/document_object_model/index.html | 3 +- .../conflicting/web/api/node/firstchild/index.html | 3 +- .../web/api/windoworworkerglobalscope/index.html | 3 +- .../index.html | 4 +- files/it/conflicting/web/guide/index.html | 3 +- .../reference/global_objects/object/index.html | 3 +- .../reference/global_objects/string/index.html | 3 +- .../web/javascript/reference/operators/index.html | 3 +- files/it/glossary/dhtml/index.html | 3 +- files/it/glossary/dom/index.html | 3 +- files/it/glossary/localization/index.html | 3 +- files/it/glossary/protocol/index.html | 3 +- files/it/glossary/response_header/index.html | 3 +- files/it/glossary/xhtml/index.html | 3 +- .../accessibility_troubleshooting/index.html | 3 +- .../accessibility/css_and_javascript/index.html | 3 +- files/it/learn/accessibility/html/index.html | 3 +- files/it/learn/accessibility/index.html | 3 +- files/it/learn/accessibility/mobile/index.html | 3 +- files/it/learn/accessibility/multimedia/index.html | 3 +- .../learn/accessibility/wai-aria_basics/index.html | 3 +- .../accessibility/what_is_accessibility/index.html | 3 +- .../cascade_and_inheritance/index.html | 3 +- .../learn/css/building_blocks/selectors/index.html | 3 +- .../first_steps/how_css_is_structured/index.html | 3 +- .../learn/css/first_steps/how_css_works/index.html | 3 +- files/it/learn/css/first_steps/index.html | 3 +- .../css/styling_text/styling_links/index.html | 3 +- files/it/learn/forms/form_validation/index.html | 3 +- .../how_to_build_custom_form_controls/index.html | 3 +- files/it/learn/forms/index.html | 3 +- .../dealing_with_files/index.html | 3 +- .../how_the_web_works/index.html | 3 +- .../publishing_your_website/index.html | 5 +- .../what_will_your_website_look_like/index.html | 3 +- .../html/howto/use_data_attributes/index.html | 3 +- .../html_text_fundamentals/index.html | 3 +- .../the_head_metadata_in_html/index.html | 3 +- .../responsive_images/index.html | 3 +- .../video_and_audio_content/index.html | 3 +- .../javascript/first_steps/variables/index.html | 3 +- .../first_steps/what_went_wrong/index.html | 3 +- files/it/learn/javascript/howto/index.html | 3 +- .../it/learn/javascript/objects/basics/index.html | 3 +- files/it/learn/javascript/objects/index.html | 3 +- files/it/learn/javascript/objects/json/index.html | 3 +- .../server-side/django/introduction/index.html | 3 +- files/it/mdn/at_ten/index.html | 3 +- .../howto/create_and_edit_pages/index.html | 5 +- .../guidelines/conventions_definitions/index.html | 3 +- .../mdn/structures/compatibility_tables/index.html | 3 +- files/it/mdn/structures/macros/index.html | 3 +- .../webextensions/content_scripts/index.html | 3 +- .../what_are_webextensions/index.html | 3 +- .../your_first_webextension/index.html | 3 +- .../firefox/experimental_features/index.html | 3 +- .../index.html | 3 +- files/it/mozilla/firefox/releases/1.5/index.html | 3 +- files/it/mozilla/firefox/releases/18/index.html | 3 +- files/it/mozilla/firefox/releases/2/index.html | 3 +- .../it/orphaned/learn/how_to_contribute/index.html | 3 +- .../learn/html/forms/html5_updates/index.html | 3 +- files/it/orphaned/mdn/community/index.html | 3 +- .../howto/create_an_mdn_account/index.html | 3 +- .../contribute/howto/delete_my_profile/index.html | 3 +- .../howto/do_a_technical_review/index.html | 3 +- .../howto/do_an_editorial_review/index.html | 3 +- .../howto/set_the_summary_for_a_page/index.html | 3 +- files/it/orphaned/mdn/editor/index.html | 3 +- .../tools/add-ons/dom_inspector/index.html | 13 +- files/it/orphaned/tools/add-ons/index.html | 5 +- .../global_objects/array/prototype/index.html | 3 +- files/it/tools/performance/index.html | 3 +- files/it/tools/responsive_design_mode/index.html | 3 +- files/it/web/api/canvas_api/index.html | 3 +- files/it/web/api/canvas_api/tutorial/index.html | 5 +- .../document_object_model/introduction/index.html | 3 +- .../documentorshadowroot/stylesheets/index.html | 3 +- .../api/eventtarget/addeventlistener/index.html | 3 +- files/it/web/api/geolocation_api/index.html | 3 +- .../web/api/htmlhyperlinkelementutils/index.html | 3 +- files/it/web/api/keyboardevent/charcode/index.html | 3 +- files/it/web/api/keyboardevent/keycode/index.html | 3 +- files/it/web/api/keyboardevent/which/index.html | 3 +- files/it/web/api/mouseevent/altkey/index.html | 3 +- files/it/web/api/mouseevent/button/index.html | 3 +- files/it/web/api/mouseevent/ctrlkey/index.html | 3 +- files/it/web/api/mouseevent/metakey/index.html | 3 +- files/it/web/api/mouseevent/shiftkey/index.html | 3 +- files/it/web/api/node/childnodes/index.html | 3 +- files/it/web/api/node/firstchild/index.html | 3 +- files/it/web/api/node/namespaceuri/index.html | 3 +- files/it/web/api/node/nodename/index.html | 3 +- files/it/web/api/node/nodetype/index.html | 3 +- files/it/web/api/node/nodevalue/index.html | 3 +- files/it/web/api/node/parentnode/index.html | 3 +- files/it/web/api/node/prefix/index.html | 3 +- files/it/web/api/node/textcontent/index.html | 3 +- files/it/web/api/notification/dir/index.html | 3 +- files/it/web/api/notification/index.html | 3 +- files/it/web/api/plugin/index.html | 3 +- files/it/web/api/uievent/ischar/index.html | 3 +- files/it/web/api/uievent/layerx/index.html | 3 +- files/it/web/api/uievent/layery/index.html | 3 +- files/it/web/api/uievent/pagex/index.html | 3 +- files/it/web/api/uievent/pagey/index.html | 3 +- files/it/web/api/uievent/view/index.html | 3 +- files/it/web/api/websockets_api/index.html | 3 +- .../index.html | 3 +- .../api/window/domcontentloaded_event/index.html | 3 +- files/it/web/api/window/find/index.html | 3 +- files/it/web/api/window/load_event/index.html | 3 +- .../clearinterval/index.html | 3 +- .../xmlhttprequest/using_xmlhttprequest/index.html | 3 +- files/it/web/css/child_combinator/index.html | 3 +- .../index.html | 3 +- .../using_multi-column_layouts/index.html | 3 +- .../basic_concepts_of_flexbox/index.html | 3 +- .../consistent_list_indentation/index.html | 3 +- files/it/web/css/font-language-override/index.html | 3 +- files/it/web/css/layout_cookbook/index.html | 3 +- files/it/web/css/reference/index.html | 5 +- .../web/demos_of_open_web_technologies/index.html | 3 +- files/it/web/guide/ajax/getting_started/index.html | 3 +- .../web/guide/html/content_categories/index.html | 3 +- files/it/web/guide/html/html5/index.html | 3 +- .../html/html5/introduction_to_html5/index.html | 3 +- .../using_html_sections_and_outlines/index.html | 3 +- files/it/web/guide/mobile/index.html | 3 +- .../guide/parsing_and_serializing_xml/index.html | 3 +- files/it/web/html/attributes/index.html | 3 +- files/it/web/html/element/figure/index.html | 3 +- files/it/web/html/reference/index.html | 3 +- .../html/using_the_application_cache/index.html | 3 +- files/it/web/http/basics_of_http/index.html | 3 +- files/it/web/http/compression/index.html | 3 +- files/it/web/http/content_negotiation/index.html | 3 +- .../web/http/headers/user-agent/firefox/index.html | 3 +- files/it/web/http/link_prefetching_faq/index.html | 3 +- files/it/web/http/overview/index.html | 3 +- files/it/web/http/range_requests/index.html | 3 +- files/it/web/http/session/index.html | 3 +- .../a_re-introduction_to_javascript/index.html | 3 +- .../it/web/javascript/about_javascript/index.html | 3 +- files/it/web/javascript/closures/index.html | 3 +- .../control_flow_and_error_handling/index.html | 5 +- .../guide/details_of_the_object_model/index.html | 3 +- files/it/web/javascript/guide/functions/index.html | 3 +- .../javascript/guide/grammar_and_types/index.html | 3 +- files/it/web/javascript/guide/index.html | 3 +- .../web/javascript/guide/introduction/index.html | 3 +- .../guide/iterators_and_generators/index.html | 3 +- .../guide/loops_and_iteration/index.html | 3 +- .../guide/regular_expressions/index.html | 3 +- .../javascript_technologies_overview/index.html | 3 +- .../it/web/javascript/memory_management/index.html | 3 +- .../reference/classes/constructor/index.html | 3 +- .../reference/functions/arguments/index.html | 3 +- .../reference/functions/arrow_functions/index.html | 3 +- .../javascript/reference/functions/get/index.html | 3 +- .../web/javascript/reference/functions/index.html | 3 +- .../javascript/reference/functions/set/index.html | 3 +- .../global_objects/proxy/proxy/apply/index.html | 3 +- .../global_objects/proxy/proxy/index.html | 3 +- .../global_objects/proxy/revocable/index.html | 3 +- .../reference/operators/comma_operator/index.html | 3 +- .../operators/conditional_operator/index.html | 3 +- .../reference/template_literals/index.html | 3 +- files/it/web/opensearch/index.html | 3 +- .../performance/critical_rendering_path/index.html | 3 +- files/it/web/progressive_web_apps/index.html | 3 +- .../it/web/security/insecure_passwords/index.html | 3 +- .../index.html | 3 +- files/it/web/svg/index.html | 3 +- .../using_custom_elements/index.html | 3 +- 187 files changed, 2094 insertions(+), 1723 deletions(-) (limited to 'files/it/web/javascript/guide') diff --git a/files/it/_redirects.txt b/files/it/_redirects.txt index 0cf9ca1bcf..c0d474a842 100644 --- a/files/it/_redirects.txt +++ b/files/it/_redirects.txt @@ -1,14 +1,15 @@ # FROM-URL TO-URL /it/docs/AJAX /it/docs/Web/Guide/AJAX -/it/docs/AJAX/Iniziare /it/docs/Web/Guide/AJAX/Iniziare -/it/docs/AJAX:Iniziare /it/docs/Web/Guide/AJAX/Iniziare +/it/docs/AJAX/Iniziare /it/docs/Web/Guide/AJAX/Getting_Started +/it/docs/AJAX:Iniziare /it/docs/Web/Guide/AJAX/Getting_Started +/it/docs/Adattare_le_applicazioni_XUL_a_Firefox_1.5 /it/docs/Mozilla/Firefox/Releases/1.5/Adapting_XUL_Applications_for_Firefox_1.5 /it/docs/CSS /it/docs/Web/CSS -/it/docs/CSS/-moz-font-language-override /it/docs/Web/CSS/-moz-font-language-override +/it/docs/CSS/-moz-font-language-override /it/docs/Web/CSS/font-language-override /it/docs/CSS/:-moz-first-node /it/docs/Web/CSS/:-moz-first-node /it/docs/CSS/:-moz-last-node /it/docs/Web/CSS/:-moz-last-node /it/docs/CSS/:-moz-list-bullet /it/docs/Web/CSS/:-moz-list-bullet /it/docs/CSS/@-moz-document /it/docs/Web/CSS/@document -/it/docs/CSS/Getting_Started /it/docs/Conoscere_i_CSS +/it/docs/CSS/Getting_Started /it/docs/Learn/CSS/First_steps /it/docs/CSS/Mozilla_Extensions /it/docs/Web/CSS/Mozilla_Extensions /it/docs/CSS/background /it/docs/Web/CSS/background /it/docs/CSS/background-attachment /it/docs/Web/CSS/background-attachment @@ -20,7 +21,7 @@ /it/docs/CSS/border-bottom /it/docs/Web/CSS/border-bottom /it/docs/CSS/color /it/docs/Web/CSS/color /it/docs/CSS/cursor /it/docs/Web/CSS/cursor -/it/docs/CSS/cursor/Usare_valori_URL_per_la_proprietà_cursor /it/docs/Web/CSS/cursor/Usare_valori_URL_per_la_proprietà_cursor +/it/docs/CSS/cursor/Usare_valori_URL_per_la_proprietà_cursor /it/docs/Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property /it/docs/CSS/text-align /it/docs/Web/CSS/text-align /it/docs/CSS/text-shadow /it/docs/Web/CSS/text-shadow /it/docs/CSS/transition-timing-function /it/docs/Web/CSS/transition-timing-function @@ -29,7 +30,7 @@ /it/docs/CSS::-moz-last-node /it/docs/Web/CSS/:-moz-last-node /it/docs/CSS::-moz-list-bullet /it/docs/Web/CSS/:-moz-list-bullet /it/docs/CSS:@-moz-document /it/docs/Web/CSS/@document -/it/docs/CSS:Getting_Started /it/docs/Conoscere_i_CSS +/it/docs/CSS:Getting_Started /it/docs/Learn/CSS/First_steps /it/docs/CSS:background /it/docs/Web/CSS/background /it/docs/CSS:background-attachment /it/docs/Web/CSS/background-attachment /it/docs/CSS:background-color /it/docs/Web/CSS/background-color @@ -37,16 +38,27 @@ /it/docs/CSS:text-align /it/docs/Web/CSS/text-align /it/docs/CSS_Reference/Mozilla_Extensions /it/docs/Web/CSS/Mozilla_Extensions /it/docs/CSS_Reference:Mozilla_Extensions /it/docs/Web/CSS/Mozilla_Extensions +/it/docs/Circa_il_Document_Object_Model /it/docs/conflicting/Web/API/Document_Object_Model /it/docs/Compatibilità_di_AJAX /it/docs/Web/Guide/AJAX -/it/docs/Conoscere_i_CSS-redirect-1 /it/docs/Conoscere_i_CSS -/it/docs/Conoscere_i_CSS/Che_cosa_sono_i_CSS-redirect-1 /it/docs/Conoscere_i_CSS/Che_cosa_sono_i_CSS -/it/docs/Conoscere_i_CSS:CSS_leggibili /it/docs/Conoscere_i_CSS/CSS_leggibili -/it/docs/Conoscere_i_CSS:Cascata_ed_ereditarietà /it/docs/Conoscere_i_CSS/Cascata_ed_ereditarietà -/it/docs/Conoscere_i_CSS:Che_cosa_sono_i_CSS /it/docs/Conoscere_i_CSS/Che_cosa_sono_i_CSS -/it/docs/Conoscere_i_CSS:Come_funzionano_i_CSS /it/docs/Conoscere_i_CSS/Come_funzionano_i_CSS -/it/docs/Conoscere_i_CSS:I_Selettori /it/docs/Conoscere_i_CSS/I_Selettori -/it/docs/Conoscere_i_CSS:Perché_usare_i_CSS /it/docs/Conoscere_i_CSS/Perché_usare_i_CSS +/it/docs/Conoscere_i_CSS /it/docs/Learn/CSS/First_steps +/it/docs/Conoscere_i_CSS-redirect-1 /it/docs/Learn/CSS/First_steps +/it/docs/Conoscere_i_CSS/CSS_leggibili /it/docs/Learn/CSS/First_steps/How_CSS_is_structured +/it/docs/Conoscere_i_CSS/Cascata_ed_ereditarietà /it/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance +/it/docs/Conoscere_i_CSS/Che_cosa_sono_i_CSS /it/docs/Learn/CSS/First_steps/How_CSS_works +/it/docs/Conoscere_i_CSS/Che_cosa_sono_i_CSS-redirect-1 /it/docs/Learn/CSS/First_steps/How_CSS_works +/it/docs/Conoscere_i_CSS/Come_funzionano_i_CSS /it/docs/conflicting/Learn/CSS/First_steps/How_CSS_works +/it/docs/Conoscere_i_CSS/I_Selettori /it/docs/conflicting/Learn/CSS/Building_blocks/Selectors +/it/docs/Conoscere_i_CSS/Perché_usare_i_CSS /it/docs/conflicting/Learn/CSS/First_steps/How_CSS_works_113cfc53c4b8d07b4694368d9b18bd49 +/it/docs/Conoscere_i_CSS:CSS_leggibili /it/docs/Learn/CSS/First_steps/How_CSS_is_structured +/it/docs/Conoscere_i_CSS:Cascata_ed_ereditarietà /it/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance +/it/docs/Conoscere_i_CSS:Che_cosa_sono_i_CSS /it/docs/Learn/CSS/First_steps/How_CSS_works +/it/docs/Conoscere_i_CSS:Come_funzionano_i_CSS /it/docs/conflicting/Learn/CSS/First_steps/How_CSS_works +/it/docs/Conoscere_i_CSS:I_Selettori /it/docs/conflicting/Learn/CSS/Building_blocks/Selectors +/it/docs/Conoscere_i_CSS:Perché_usare_i_CSS /it/docs/conflicting/Learn/CSS/First_steps/How_CSS_works_113cfc53c4b8d07b4694368d9b18bd49 /it/docs/Core_JavaScript_1.5_Reference /it/docs/Web/JavaScript/Reference +/it/docs/Costruire_e_decostruire_un_documento_XML /it/docs/Web/Guide/Parsing_and_serializing_XML +/it/docs/DHTML /it/docs/Glossary/DHTML +/it/docs/DOM /it/docs/Glossary/DOM /it/docs/DOM/Selection /it/docs/Web/API/Selection /it/docs/DOM/Selection/addRange /it/docs/Web/API/Selection/addRange /it/docs/DOM/Selection/anchorNode /it/docs/Web/API/Selection/anchorNode @@ -67,7 +79,7 @@ /it/docs/DOM/Selection/selectAllChildren /it/docs/Web/API/Selection/selectAllChildren /it/docs/DOM/Selection/toString /it/docs/Web/API/Selection/toString /it/docs/DOM/XMLHttpRequest /it/docs/Web/API/XMLHttpRequest -/it/docs/DOM/XMLHttpRequest/Usare_XMLHttpRequest /it/docs/Web/API/XMLHttpRequest/Usare_XMLHttpRequest +/it/docs/DOM/XMLHttpRequest/Usare_XMLHttpRequest /it/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest /it/docs/DOM/document /it/docs/Web/API/Document /it/docs/DOM/document.URL /it/docs/Web/API/Document/URL /it/docs/DOM/document.anchors /it/docs/Web/API/Document/anchors @@ -80,7 +92,7 @@ /it/docs/DOM/document.defaultView /it/docs/Web/API/Document/defaultView /it/docs/DOM/document.doctype /it/docs/Web/API/Document/doctype /it/docs/DOM/document.documentElement /it/docs/Web/API/Document/documentElement -/it/docs/DOM/document.firstChild /it/docs/Web/API/Document/firstChild +/it/docs/DOM/document.firstChild /it/docs/conflicting/Web/API/Node/firstChild /it/docs/DOM/document.forms /it/docs/Web/API/Document/forms /it/docs/DOM/document.getElementById /it/docs/Web/API/Document/getElementById /it/docs/DOM/document.getElementsByName /it/docs/Web/API/Document/getElementsByName @@ -88,48 +100,48 @@ /it/docs/DOM/document.importNode /it/docs/Web/API/Document/importNode /it/docs/DOM/document.lastModified /it/docs/Web/API/Document/lastModified /it/docs/DOM/document.links /it/docs/Web/API/Document/links -/it/docs/DOM/document.namespaceURI /it/docs/Web/API/Document/namespaceURI +/it/docs/DOM/document.namespaceURI /it/docs/Web/API/Node/namespaceURI /it/docs/DOM/document.open /it/docs/Web/API/Document/open /it/docs/DOM/document.referrer /it/docs/Web/API/Document/referrer -/it/docs/DOM/document.styleSheets /it/docs/Web/API/Document/styleSheets +/it/docs/DOM/document.styleSheets /it/docs/Web/API/DocumentOrShadowRoot/styleSheets /it/docs/DOM/document.title /it/docs/Web/API/Document/title /it/docs/DOM/document.width /it/docs/Web/API/Document/width /it/docs/DOM/element /it/docs/Web/API/Element -/it/docs/DOM/element.addEventListener /it/docs/Web/API/Element/addEventListener +/it/docs/DOM/element.addEventListener /it/docs/Web/API/EventTarget/addEventListener /it/docs/DOM/element.attributes /it/docs/Web/API/Element/attributes -/it/docs/DOM/element.childNodes /it/docs/Web/API/Element/childNodes +/it/docs/DOM/element.childNodes /it/docs/Web/API/Node/childNodes /it/docs/DOM/element.className /it/docs/Web/API/Element/className /it/docs/DOM/element.clientHeight /it/docs/Web/API/Element/clientHeight -/it/docs/DOM/element.firstChild /it/docs/Web/API/Element/firstChild +/it/docs/DOM/element.firstChild /it/docs/Web/API/Node/firstChild /it/docs/DOM/element.hasAttributes /it/docs/Web/API/Element/hasAttributes -/it/docs/DOM/element.nodeName /it/docs/Web/API/Element/nodeName -/it/docs/DOM/element.nodeType /it/docs/Web/API/Element/nodeType -/it/docs/DOM/element.nodeValue /it/docs/Web/API/Element/nodeValue -/it/docs/DOM/element.parentNode /it/docs/Web/API/Element/parentNode -/it/docs/DOM/element.prefix /it/docs/Web/API/Element/prefix -/it/docs/DOM/element.textContent /it/docs/Web/API/Element/textContent +/it/docs/DOM/element.nodeName /it/docs/Web/API/Node/nodeName +/it/docs/DOM/element.nodeType /it/docs/Web/API/Node/nodeType +/it/docs/DOM/element.nodeValue /it/docs/Web/API/Node/nodeValue +/it/docs/DOM/element.parentNode /it/docs/Web/API/Node/parentNode +/it/docs/DOM/element.prefix /it/docs/Web/API/Node/prefix +/it/docs/DOM/element.textContent /it/docs/Web/API/Node/textContent /it/docs/DOM/event /it/docs/Web/API/Event -/it/docs/DOM/event.altKey /it/docs/Web/API/Event/altKey +/it/docs/DOM/event.altKey /it/docs/Web/API/MouseEvent/altKey /it/docs/DOM/event.bubbles /it/docs/Web/API/Event/bubbles -/it/docs/DOM/event.button /it/docs/Web/API/Event/button +/it/docs/DOM/event.button /it/docs/Web/API/MouseEvent/button /it/docs/DOM/event.cancelable /it/docs/Web/API/Event/cancelable -/it/docs/DOM/event.charCode /it/docs/Web/API/Event/charCode -/it/docs/DOM/event.ctrlKey /it/docs/Web/API/Event/ctrlKey +/it/docs/DOM/event.charCode /it/docs/Web/API/KeyboardEvent/charCode +/it/docs/DOM/event.ctrlKey /it/docs/Web/API/MouseEvent/ctrlKey /it/docs/DOM/event.eventPhase /it/docs/Web/API/Event/eventPhase -/it/docs/DOM/event.isChar /it/docs/Web/API/Event/isChar -/it/docs/DOM/event.keyCode /it/docs/Web/API/Event/keyCode -/it/docs/DOM/event.layerX /it/docs/Web/API/Event/layerX -/it/docs/DOM/event.layerY /it/docs/Web/API/Event/layerY -/it/docs/DOM/event.metaKey /it/docs/Web/API/Event/metaKey -/it/docs/DOM/event.pageX /it/docs/Web/API/Event/pageX -/it/docs/DOM/event.pageY /it/docs/Web/API/Event/pageY +/it/docs/DOM/event.isChar /it/docs/Web/API/UIEvent/isChar +/it/docs/DOM/event.keyCode /it/docs/Web/API/KeyboardEvent/keyCode +/it/docs/DOM/event.layerX /it/docs/Web/API/UIEvent/layerX +/it/docs/DOM/event.layerY /it/docs/Web/API/UIEvent/layerY +/it/docs/DOM/event.metaKey /it/docs/Web/API/MouseEvent/metaKey +/it/docs/DOM/event.pageX /it/docs/Web/API/UIEvent/pageX +/it/docs/DOM/event.pageY /it/docs/Web/API/UIEvent/pageY /it/docs/DOM/event.preventDefault /it/docs/Web/API/Event/preventDefault -/it/docs/DOM/event.shiftKey /it/docs/Web/API/Event/shiftKey +/it/docs/DOM/event.shiftKey /it/docs/Web/API/MouseEvent/shiftKey /it/docs/DOM/event.stopPropagation /it/docs/Web/API/Event/stopPropagation /it/docs/DOM/event.timeStamp /it/docs/Web/API/Event/timeStamp /it/docs/DOM/event.type /it/docs/Web/API/Event/type -/it/docs/DOM/event.view /it/docs/Web/API/Event/view -/it/docs/DOM/event.which /it/docs/Web/API/Event/which +/it/docs/DOM/event.view /it/docs/Web/API/UIEvent/view +/it/docs/DOM/event.which /it/docs/Web/API/KeyboardEvent/which /it/docs/DOM/form /it/docs/Web/API/HTMLFormElement /it/docs/DOM/form.acceptCharset /it/docs/Web/API/HTMLFormElement/acceptCharset /it/docs/DOM/form.action /it/docs/Web/API/HTMLFormElement/action @@ -226,7 +238,7 @@ /it/docs/DOM:document.defaultView /it/docs/Web/API/Document/defaultView /it/docs/DOM:document.doctype /it/docs/Web/API/Document/doctype /it/docs/DOM:document.documentElement /it/docs/Web/API/Document/documentElement -/it/docs/DOM:document.firstChild /it/docs/Web/API/Document/firstChild +/it/docs/DOM:document.firstChild /it/docs/conflicting/Web/API/Node/firstChild /it/docs/DOM:document.forms /it/docs/Web/API/Document/forms /it/docs/DOM:document.getElementById /it/docs/Web/API/Document/getElementById /it/docs/DOM:document.getElementsByName /it/docs/Web/API/Document/getElementsByName @@ -234,48 +246,48 @@ /it/docs/DOM:document.importNode /it/docs/Web/API/Document/importNode /it/docs/DOM:document.lastModified /it/docs/Web/API/Document/lastModified /it/docs/DOM:document.links /it/docs/Web/API/Document/links -/it/docs/DOM:document.namespaceURI /it/docs/Web/API/Document/namespaceURI +/it/docs/DOM:document.namespaceURI /it/docs/Web/API/Node/namespaceURI /it/docs/DOM:document.open /it/docs/Web/API/Document/open /it/docs/DOM:document.referrer /it/docs/Web/API/Document/referrer -/it/docs/DOM:document.styleSheets /it/docs/Web/API/Document/styleSheets +/it/docs/DOM:document.styleSheets /it/docs/Web/API/DocumentOrShadowRoot/styleSheets /it/docs/DOM:document.title /it/docs/Web/API/Document/title /it/docs/DOM:document.width /it/docs/Web/API/Document/width /it/docs/DOM:element /it/docs/Web/API/Element -/it/docs/DOM:element.addEventListener /it/docs/Web/API/Element/addEventListener +/it/docs/DOM:element.addEventListener /it/docs/Web/API/EventTarget/addEventListener /it/docs/DOM:element.attributes /it/docs/Web/API/Element/attributes -/it/docs/DOM:element.childNodes /it/docs/Web/API/Element/childNodes +/it/docs/DOM:element.childNodes /it/docs/Web/API/Node/childNodes /it/docs/DOM:element.className /it/docs/Web/API/Element/className /it/docs/DOM:element.clientHeight /it/docs/Web/API/Element/clientHeight -/it/docs/DOM:element.firstChild /it/docs/Web/API/Element/firstChild +/it/docs/DOM:element.firstChild /it/docs/Web/API/Node/firstChild /it/docs/DOM:element.hasAttributes /it/docs/Web/API/Element/hasAttributes -/it/docs/DOM:element.nodeName /it/docs/Web/API/Element/nodeName -/it/docs/DOM:element.nodeType /it/docs/Web/API/Element/nodeType -/it/docs/DOM:element.nodeValue /it/docs/Web/API/Element/nodeValue -/it/docs/DOM:element.parentNode /it/docs/Web/API/Element/parentNode -/it/docs/DOM:element.prefix /it/docs/Web/API/Element/prefix -/it/docs/DOM:element.textContent /it/docs/Web/API/Element/textContent +/it/docs/DOM:element.nodeName /it/docs/Web/API/Node/nodeName +/it/docs/DOM:element.nodeType /it/docs/Web/API/Node/nodeType +/it/docs/DOM:element.nodeValue /it/docs/Web/API/Node/nodeValue +/it/docs/DOM:element.parentNode /it/docs/Web/API/Node/parentNode +/it/docs/DOM:element.prefix /it/docs/Web/API/Node/prefix +/it/docs/DOM:element.textContent /it/docs/Web/API/Node/textContent /it/docs/DOM:event /it/docs/Web/API/Event -/it/docs/DOM:event.altKey /it/docs/Web/API/Event/altKey +/it/docs/DOM:event.altKey /it/docs/Web/API/MouseEvent/altKey /it/docs/DOM:event.bubbles /it/docs/Web/API/Event/bubbles -/it/docs/DOM:event.button /it/docs/Web/API/Event/button +/it/docs/DOM:event.button /it/docs/Web/API/MouseEvent/button /it/docs/DOM:event.cancelable /it/docs/Web/API/Event/cancelable -/it/docs/DOM:event.charCode /it/docs/Web/API/Event/charCode -/it/docs/DOM:event.ctrlKey /it/docs/Web/API/Event/ctrlKey +/it/docs/DOM:event.charCode /it/docs/Web/API/KeyboardEvent/charCode +/it/docs/DOM:event.ctrlKey /it/docs/Web/API/MouseEvent/ctrlKey /it/docs/DOM:event.eventPhase /it/docs/Web/API/Event/eventPhase -/it/docs/DOM:event.isChar /it/docs/Web/API/Event/isChar -/it/docs/DOM:event.keyCode /it/docs/Web/API/Event/keyCode -/it/docs/DOM:event.layerX /it/docs/Web/API/Event/layerX -/it/docs/DOM:event.layerY /it/docs/Web/API/Event/layerY -/it/docs/DOM:event.metaKey /it/docs/Web/API/Event/metaKey -/it/docs/DOM:event.pageX /it/docs/Web/API/Event/pageX -/it/docs/DOM:event.pageY /it/docs/Web/API/Event/pageY +/it/docs/DOM:event.isChar /it/docs/Web/API/UIEvent/isChar +/it/docs/DOM:event.keyCode /it/docs/Web/API/KeyboardEvent/keyCode +/it/docs/DOM:event.layerX /it/docs/Web/API/UIEvent/layerX +/it/docs/DOM:event.layerY /it/docs/Web/API/UIEvent/layerY +/it/docs/DOM:event.metaKey /it/docs/Web/API/MouseEvent/metaKey +/it/docs/DOM:event.pageX /it/docs/Web/API/UIEvent/pageX +/it/docs/DOM:event.pageY /it/docs/Web/API/UIEvent/pageY /it/docs/DOM:event.preventDefault /it/docs/Web/API/Event/preventDefault -/it/docs/DOM:event.shiftKey /it/docs/Web/API/Event/shiftKey +/it/docs/DOM:event.shiftKey /it/docs/Web/API/MouseEvent/shiftKey /it/docs/DOM:event.stopPropagation /it/docs/Web/API/Event/stopPropagation /it/docs/DOM:event.timeStamp /it/docs/Web/API/Event/timeStamp /it/docs/DOM:event.type /it/docs/Web/API/Event/type -/it/docs/DOM:event.view /it/docs/Web/API/Event/view -/it/docs/DOM:event.which /it/docs/Web/API/Event/which +/it/docs/DOM:event.view /it/docs/Web/API/UIEvent/view +/it/docs/DOM:event.which /it/docs/Web/API/KeyboardEvent/which /it/docs/DOM:form /it/docs/Web/API/HTMLFormElement /it/docs/DOM:form.acceptCharset /it/docs/Web/API/HTMLFormElement/acceptCharset /it/docs/DOM:form.action /it/docs/Web/API/HTMLFormElement/action @@ -341,17 +353,25 @@ /it/docs/DOM:window.status /it/docs/Web/API/Window/status /it/docs/DOM:window.statusbar /it/docs/Web/API/Window/statusbar /it/docs/DOM:window.stop /it/docs/Web/API/Window/stop +/it/docs/DOM_Inspector /it/docs/orphaned/Tools/Add-ons/DOM_Inspector +/it/docs/Dare_una_mano_al_puntatore /it/docs/conflicting/Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property /it/docs/Developer_Guide /it/docs/Mozilla/Developer_guide /it/docs/Estensioni:Comunità /it/docs/Estensioni/Comunità -/it/docs/Firefox_1.5 /it/docs/Firefox_1.5_per_Sviluppatori -/it/docs/Firefox_2 /it/docs/Firefox_2.0_per_Sviluppatori -/it/docs/Firefox_2_per_Sviluppatori /it/docs/Firefox_2.0_per_Sviluppatori -/it/docs/Guida_di_riferimento_ai_CSS /it/docs/Web/CSS/Guida_di_riferimento_ai_CSS +/it/docs/Firefox_1.5 /it/docs/Mozilla/Firefox/Releases/1.5 +/it/docs/Firefox_1.5_per_Sviluppatori /it/docs/Mozilla/Firefox/Releases/1.5 +/it/docs/Firefox_18_for_developers /it/docs/Mozilla/Firefox/Releases/18 +/it/docs/Firefox_2 /it/docs/Mozilla/Firefox/Releases/2 +/it/docs/Firefox_2.0_per_Sviluppatori /it/docs/Mozilla/Firefox/Releases/2 +/it/docs/Firefox_2_per_Sviluppatori /it/docs/Mozilla/Firefox/Releases/2 +/it/docs/Gli_User_Agent_di_Gecko /it/docs/Web/HTTP/Headers/User-Agent/Firefox +/it/docs/Glossary/Header_di_risposta /it/docs/Glossary/Response_header +/it/docs/Glossary/Protocollo /it/docs/Glossary/Protocol +/it/docs/Guida_di_riferimento_ai_CSS /it/docs/Web/CSS/Reference /it/docs/HTML /it/docs/Web/HTML -/it/docs/HTML/Aree_tematiche /it/docs/Web/Guide/HTML/Categorie_di_contenuto -/it/docs/HTML/Attributi /it/docs/Web/HTML/Attributi -/it/docs/HTML/Canvas /it/docs/Web/HTML/Canvas -/it/docs/HTML/Canvas/Drawing_graphics_with_canvas /it/docs/Web/HTML/Canvas/Drawing_graphics_with_canvas +/it/docs/HTML/Aree_tematiche /it/docs/Web/Guide/HTML/Content_categories +/it/docs/HTML/Attributi /it/docs/Web/HTML/Attributes +/it/docs/HTML/Canvas /it/docs/Web/API/Canvas_API +/it/docs/HTML/Canvas/Drawing_graphics_with_canvas /it/docs/conflicting/Web/API/Canvas_API/Tutorial /it/docs/HTML/Element /it/docs/Web/HTML/Element /it/docs/HTML/Element/a /it/docs/Web/HTML/Element/a /it/docs/HTML/Element/abbr /it/docs/Web/HTML/Element/abbr @@ -362,68 +382,232 @@ /it/docs/HTML/Element/output /it/docs/Web/HTML/Element/output /it/docs/HTML/Element/section /it/docs/Web/HTML/Element/section /it/docs/HTML/Element/time /it/docs/Web/HTML/Element/time -/it/docs/HTML/Forms_in_HTML /it/docs/Web/HTML/Forms_in_HTML +/it/docs/HTML/Forms_in_HTML /it/docs/orphaned/Learn/HTML/Forms/HTML5_updates /it/docs/HTML/Global_attributes /it/docs/Web/HTML/Global_attributes -/it/docs/HTML/HTML5 /it/docs/Web/HTML/HTML5 -/it/docs/HTML/HTML5/Introduction_to_HTML5 /it/docs/Web/HTML/HTML5/Introduction_to_HTML5 +/it/docs/HTML/HTML5 /it/docs/Web/Guide/HTML/HTML5 +/it/docs/HTML/HTML5/Introduction_to_HTML5 /it/docs/Web/Guide/HTML/HTML5/Introduction_to_HTML5 /it/docs/HTML/Introduzione /it/docs/Learn/HTML/Introduction_to_HTML -/it/docs/HTML/Sections_and_Outlines_of_an_HTML5_document /it/docs/Web/HTML/Sections_and_Outlines_of_an_HTML5_document -/it/docs/HTML/utilizzare_application_cache /it/docs/Web/HTML/utilizzare_application_cache -/it/docs/Il_DOM_e_JavaScript /it/docs/Web/JavaScript/Il_DOM_e_JavaScript +/it/docs/HTML/Sections_and_Outlines_of_an_HTML5_document /it/docs/Web/Guide/HTML/Using_HTML_sections_and_outlines +/it/docs/HTML/utilizzare_application_cache /it/docs/Web/HTML/Using_the_application_cache +/it/docs/Il_DOM_e_JavaScript /it/docs/Web/JavaScript/JavaScript_technologies_overview /it/docs/Importare_applicazioni_da_Internet_Explorer_a_Mozilla /it/docs/Migrare_applicazioni_da_Internet_Explorer_a_Mozilla -/it/docs/Introduzione_al_carattere_Object-Oriented_di_JavaScript /it/docs/Web/JavaScript/Introduzione_al_carattere_Object-Oriented_di_JavaScript +/it/docs/Indentazione_corretta_delle_liste /it/docs/Web/CSS/CSS_Lists_and_Counters/Consistent_list_indentation +/it/docs/Installare_plugin_di_ricerca_dalle_pagine_web /it/docs/Web/OpenSearch +/it/docs/Introduzione_a_SVG_dentro_XHTML /it/docs/Web/SVG/Applying_SVG_effects_to_HTML_content +/it/docs/Introduzione_al_carattere_Object-Oriented_di_JavaScript /it/docs/conflicting/Learn/JavaScript/Objects /it/docs/JavaScript /it/docs/Web/JavaScript /it/docs/JavaScript/ECMAScript_6_support_in_Mozilla /it/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla -/it/docs/JavaScript/Guida /it/docs/Web/JavaScript/Guida +/it/docs/JavaScript/Guida /it/docs/Web/JavaScript/Guide /it/docs/JavaScript/New_in_JavaScript /it/docs/Web/JavaScript/New_in_JavaScript /it/docs/JavaScript/New_in_JavaScript/Novità_in_JavaScript_1.6 /it/docs/Web/JavaScript/New_in_JavaScript/Novità_in_JavaScript_1.6 /it/docs/JavaScript/New_in_JavaScript/Novità_in_JavaScript_1.7 /it/docs/Web/JavaScript/New_in_JavaScript/Novità_in_JavaScript_1.7 /it/docs/JavaScript/Reference /it/docs/Web/JavaScript/Reference -/it/docs/JavaScript/Reference/Functions_and_function_scope /it/docs/Web/JavaScript/Reference/Functions_and_function_scope +/it/docs/JavaScript/Reference/Functions_and_function_scope /it/docs/Web/JavaScript/Reference/Functions /it/docs/JavaScript/Reference/Global_Objects /it/docs/Web/JavaScript/Reference/Global_Objects /it/docs/JavaScript/Reference/Global_Objects/Object /it/docs/Web/JavaScript/Reference/Global_Objects/Object /it/docs/JavaScript/Reference/Global_Objects/Object/keys /it/docs/Web/JavaScript/Reference/Global_Objects/Object/keys /it/docs/JavaScript/Reference/Global_Objects/eval /it/docs/Web/JavaScript/Reference/Global_Objects/eval /it/docs/JavaScript/Reference/Statements /it/docs/Web/JavaScript/Reference/Statements /it/docs/JavaScript/Reference/Statements/let /it/docs/Web/JavaScript/Reference/Statements/let -/it/docs/JavaScript/Una_reintroduzione_al_JavaScript /it/docs/Web/JavaScript/Una_reintroduzione_al_JavaScript +/it/docs/JavaScript/Una_reintroduzione_al_JavaScript /it/docs/Web/JavaScript/A_re-introduction_to_JavaScript +/it/docs/Le_Colonne_nei_CSS3 /it/docs/Web/CSS/CSS_Columns/Using_multi-column_layouts +/it/docs/Learn/Accessibilità /it/docs/Learn/Accessibility +/it/docs/Learn/Accessibilità/Accessibilità_dispositivi_mobili /it/docs/Learn/Accessibility/Mobile +/it/docs/Learn/Accessibilità/Accessibilità_test_risoluzione_problemi /it/docs/Learn/Accessibility/Accessibility_troubleshooting +/it/docs/Learn/Accessibilità/CSS_e_JavaScript_accessibilità /it/docs/Learn/Accessibility/CSS_and_JavaScript +/it/docs/Learn/Accessibilità/Cosa_è_accessibilità /it/docs/Learn/Accessibility/What_is_accessibility +/it/docs/Learn/Accessibilità/HTML_accessibilità /it/docs/Learn/Accessibility/HTML +/it/docs/Learn/Accessibilità/Multimedia /it/docs/Learn/Accessibility/Multimedia +/it/docs/Learn/Accessibilità/WAI-ARIA_basics /it/docs/Learn/Accessibility/WAI-ARIA_basics /it/docs/Learn/CSS/Basics/Box_model /en-US/docs/Learn/CSS/Building_blocks/The_box_model +/it/docs/Learn/CSS/Building_blocks/Selettori /it/docs/Learn/CSS/Building_blocks/Selectors /it/docs/Learn/CSS/Introduction_to_CSS /en-US/docs/Learn/CSS/First_steps /it/docs/Learn/CSS/Introduction_to_CSS/Come_funziona_CSS /en-US/docs/Learn/CSS/First_steps/How_CSS_works /it/docs/Learn/CSS/Styling_boxes /en-US/docs/Learn/CSS/Building_blocks /it/docs/Learn/CSS/Styling_boxes/Stili_per_tabelle /it/docs/Learn/CSS/Building_blocks/Styling_tables +/it/docs/Learn/CSS/Styling_text/Definire_stili_link /it/docs/Learn/CSS/Styling_text/Styling_links +/it/docs/Learn/Come_contribuire /it/docs/orphaned/Learn/How_to_contribute +/it/docs/Learn/Getting_started_with_the_web/Che_aspetto_avrà_il_tuo_sito_web /it/docs/Learn/Getting_started_with_the_web/What_will_your_website_look_like +/it/docs/Learn/Getting_started_with_the_web/Come_funziona_il_Web /it/docs/Learn/Getting_started_with_the_web/How_the_Web_works +/it/docs/Learn/Getting_started_with_the_web/Gestire_i_file /it/docs/Learn/Getting_started_with_the_web/Dealing_with_files +/it/docs/Learn/Getting_started_with_the_web/Pubbicare_sito /it/docs/Learn/Getting_started_with_the_web/Publishing_your_website +/it/docs/Learn/HTML/Forms /it/docs/Learn/Forms +/it/docs/Learn/HTML/Forms/Come_costruire_custom_form_widgets_personalizzati /it/docs/Learn/Forms/How_to_build_custom_form_controls +/it/docs/Learn/HTML/Forms/Form_validation /it/docs/Learn/Forms/Form_validation +/it/docs/Learn/HTML/Howto/Uso_attributi_data /it/docs/Learn/HTML/Howto/Use_data_attributes +/it/docs/Learn/HTML/Introduction_to_HTML/I_metadata_nella_head_in_HTML /it/docs/Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML +/it/docs/Learn/HTML/Introduction_to_HTML/fondamenti_di_testo_html /it/docs/Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals +/it/docs/Learn/HTML/Multimedia_and_embedding/contenuti_video_e_audio /it/docs/Learn/HTML/Multimedia_and_embedding/Video_and_audio_content +/it/docs/Learn/HTML/Multimedia_and_embedding/immagini_reattive /it/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images +/it/docs/Learn/HTML/Scrivi_una_semplice_pagina_in_HTML /it/docs/conflicting/Learn/Getting_started_with_the_web +/it/docs/Learn/JavaScript/Comefare /it/docs/Learn/JavaScript/Howto +/it/docs/Learn/JavaScript/First_steps/Cosa_è_andato_storto /it/docs/Learn/JavaScript/First_steps/What_went_wrong +/it/docs/Learn/JavaScript/First_steps/Variabili /it/docs/Learn/JavaScript/First_steps/Variables +/it/docs/Learn/JavaScript/Oggetti /it/docs/Learn/JavaScript/Objects +/it/docs/Learn/JavaScript/Oggetti/Basics /it/docs/Learn/JavaScript/Objects/Basics +/it/docs/Learn/JavaScript/Oggetti/JSON /it/docs/Learn/JavaScript/Objects/JSON +/it/docs/Learn/Server-side/Django/Introduzione /it/docs/Learn/Server-side/Django/Introduction /it/docs/Libertà!_Uguaglianza!_Validità! /en-US/docs/Learn/HTML/Introduction_to_HTML/Debugging_HTML -/it/docs/Localizzazione /it/docs/Localization +/it/docs/Link_prefetching_FAQ /it/docs/Web/HTTP/Link_prefetching_FAQ +/it/docs/Localization /it/docs/Glossary/Localization +/it/docs/Localizzazione /it/docs/Glossary/Localization +/it/docs/MDN/Community /it/docs/orphaned/MDN/Community /it/docs/MDN/Contribute/Content /it/docs/MDN/Guidelines -/it/docs/MDN/Contribute/Content/Macros /it/docs/MDN/Guidelines/Macros -/it/docs/MDN/Contribute/Content/Migliore_pratica /it/docs/MDN/Guidelines/Migliore_pratica -/it/docs/MDN/Contribute/Editor /it/docs/MDN/Editor +/it/docs/MDN/Contribute/Content/Macros /it/docs/MDN/Structures/Macros +/it/docs/MDN/Contribute/Content/Migliore_pratica /it/docs/MDN/Guidelines/Conventions_definitions +/it/docs/MDN/Contribute/Creating_and_editing_pages /it/docs/MDN/Contribute/Howto/Create_and_edit_pages +/it/docs/MDN/Contribute/Editor /it/docs/orphaned/MDN/Editor +/it/docs/MDN/Contribute/Howto/Create_an_MDN_account /it/docs/orphaned/MDN/Contribute/Howto/Create_an_MDN_account +/it/docs/MDN/Contribute/Howto/Delete_my_profile /it/docs/orphaned/MDN/Contribute/Howto/Delete_my_profile +/it/docs/MDN/Contribute/Howto/Do_a_technical_review /it/docs/orphaned/MDN/Contribute/Howto/Do_a_technical_review +/it/docs/MDN/Contribute/Howto/Do_an_editorial_review /it/docs/orphaned/MDN/Contribute/Howto/Do_an_editorial_review +/it/docs/MDN/Contribute/Howto/impostare_il_riassunto_di_una_pagina /it/docs/orphaned/MDN/Contribute/Howto/Set_the_summary_for_a_page /it/docs/MDN/Contribute/Structures /it/docs/MDN/Structures -/it/docs/MDN/Contribute/Structures/Tabelle_compatibilità /it/docs/MDN/Structures/Tabelle_compatibilità +/it/docs/MDN/Contribute/Structures/Tabelle_compatibilità /it/docs/MDN/Structures/Compatibility_tables +/it/docs/MDN/Editor /it/docs/orphaned/MDN/Editor /it/docs/MDN/Feedback /it/docs/MDN/Contribute/Feedback +/it/docs/MDN/Guidelines/Macros /it/docs/MDN/Structures/Macros +/it/docs/MDN/Guidelines/Migliore_pratica /it/docs/MDN/Guidelines/Conventions_definitions +/it/docs/MDN/Structures/Tabelle_compatibilità /it/docs/MDN/Structures/Compatibility_tables +/it/docs/MDN_at_ten /it/docs/MDN/At_ten +/it/docs/Mozilla/Add-ons/WebExtensions/Cosa_sono_le_WebExtensions /it/docs/Mozilla/Add-ons/WebExtensions/What_are_WebExtensions +/it/docs/Mozilla/Add-ons/WebExtensions/La_tua_prima_WebExtension /it/docs/Mozilla/Add-ons/WebExtensions/Your_first_WebExtension +/it/docs/Mozilla/Add-ons/WebExtensions/Script_contenuto /it/docs/Mozilla/Add-ons/WebExtensions/Content_scripts +/it/docs/Mozilla/Firefox/Funzionalità_sperimentali /it/docs/Mozilla/Firefox/Experimental_features /it/docs/Novità_in_JavaScript_1.6 /it/docs/Web/JavaScript/New_in_JavaScript/Novità_in_JavaScript_1.6 /it/docs/Novità_in_JavaScript_1.7 /it/docs/Web/JavaScript/New_in_JavaScript/Novità_in_JavaScript_1.7 /it/docs/Pagina_Principale /it/docs/Web -/it/docs/Plugins /it/docs/Plug-in +/it/docs/Plug-in /it/docs/Web/API/Plugin +/it/docs/Plugins /it/docs/Web/API/Plugin +/it/docs/Python /it/docs/conflicting/Learn/Server-side/Django /it/docs/Rich-Text_Editing_in_Mozilla /it/docs/Web/Guide/HTML/Editable_content/Rich-Text_Editing_in_Mozilla -/it/docs/Una_re-introduzione_a_Javascript /it/docs/Web/JavaScript/Una_reintroduzione_al_JavaScript -/it/docs/Usare_le_URL_nella_proprietà_cursor /it/docs/Web/CSS/cursor/Usare_valori_URL_per_la_proprietà_cursor -/it/docs/Usare_valori_URL_per_la_proprietà_cursor /it/docs/Web/CSS/cursor/Usare_valori_URL_per_la_proprietà_cursor +/it/docs/SVG /it/docs/Web/SVG +/it/docs/Sviluppo_Web /it/docs/conflicting/Web/Guide +/it/docs/Tools/Add-ons /it/docs/orphaned/Tools/Add-ons +/it/docs/Tools/Prestazioni /it/docs/Tools/Performance +/it/docs/Tools/Visualizzazione_Flessibile /it/docs/Tools/Responsive_Design_Mode +/it/docs/Tutorial_sulle_Canvas /it/docs/Web/API/Canvas_API/Tutorial +/it/docs/Una_re-introduzione_a_Javascript /it/docs/Web/JavaScript/A_re-introduction_to_JavaScript +/it/docs/Usare_le_URL_nella_proprietà_cursor /it/docs/Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property +/it/docs/Usare_valori_URL_per_la_proprietà_cursor /it/docs/Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property +/it/docs/Web/API/Document/firstChild /it/docs/conflicting/Web/API/Node/firstChild +/it/docs/Web/API/Document/namespaceURI /it/docs/Web/API/Node/namespaceURI +/it/docs/Web/API/Document/styleSheets /it/docs/Web/API/DocumentOrShadowRoot/styleSheets +/it/docs/Web/API/Document_Object_Model/Introduzione /it/docs/Web/API/Document_Object_Model/Introduction /it/docs/Web/API/Element.getElementsByTagName /it/docs/Web/API/Element/getElementsByTagName /it/docs/Web/API/Element.scrollHeight /it/docs/Web/API/Element/scrollHeight +/it/docs/Web/API/Element/addEventListener /it/docs/Web/API/EventTarget/addEventListener +/it/docs/Web/API/Element/childNodes /it/docs/Web/API/Node/childNodes +/it/docs/Web/API/Element/firstChild /it/docs/Web/API/Node/firstChild +/it/docs/Web/API/Element/nodeName /it/docs/Web/API/Node/nodeName +/it/docs/Web/API/Element/nodeType /it/docs/Web/API/Node/nodeType +/it/docs/Web/API/Element/nodeValue /it/docs/Web/API/Node/nodeValue +/it/docs/Web/API/Element/parentNode /it/docs/Web/API/Node/parentNode +/it/docs/Web/API/Element/prefix /it/docs/Web/API/Node/prefix +/it/docs/Web/API/Element/textContent /it/docs/Web/API/Node/textContent +/it/docs/Web/API/Event/altKey /it/docs/Web/API/MouseEvent/altKey +/it/docs/Web/API/Event/button /it/docs/Web/API/MouseEvent/button +/it/docs/Web/API/Event/charCode /it/docs/Web/API/KeyboardEvent/charCode +/it/docs/Web/API/Event/ctrlKey /it/docs/Web/API/MouseEvent/ctrlKey +/it/docs/Web/API/Event/isChar /it/docs/Web/API/UIEvent/isChar +/it/docs/Web/API/Event/keyCode /it/docs/Web/API/KeyboardEvent/keyCode +/it/docs/Web/API/Event/layerX /it/docs/Web/API/UIEvent/layerX +/it/docs/Web/API/Event/layerY /it/docs/Web/API/UIEvent/layerY +/it/docs/Web/API/Event/metaKey /it/docs/Web/API/MouseEvent/metaKey +/it/docs/Web/API/Event/pageX /it/docs/Web/API/UIEvent/pageX +/it/docs/Web/API/Event/pageY /it/docs/Web/API/UIEvent/pageY +/it/docs/Web/API/Event/shiftKey /it/docs/Web/API/MouseEvent/shiftKey +/it/docs/Web/API/Event/view /it/docs/Web/API/UIEvent/view +/it/docs/Web/API/Event/which /it/docs/Web/API/KeyboardEvent/which +/it/docs/Web/API/Geolocation/Using_geolocation /it/docs/Web/API/Geolocation_API /it/docs/Web/API/Navigator.cookieEnabled /it/docs/Web/API/Navigator/cookieEnabled /it/docs/Web/API/Position /it/docs/Web/API/GeolocationPosition +/it/docs/Web/API/URLUtils /it/docs/Web/API/HTMLHyperlinkElementUtils +/it/docs/Web/API/WindowTimers /it/docs/conflicting/Web/API/WindowOrWorkerGlobalScope +/it/docs/Web/API/WindowTimers/clearInterval /it/docs/Web/API/WindowOrWorkerGlobalScope/clearInterval +/it/docs/Web/API/XMLHttpRequest/Usare_XMLHttpRequest /it/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest /it/docs/Web/API/document.write() /it/docs/Web/API/Document/write +/it/docs/Web/API/notifiche /it/docs/Web/API/Notification +/it/docs/Web/API/notifiche/dir /it/docs/Web/API/Notification/dir +/it/docs/Web/Accessibility/Sviluppo_Web /it/docs/conflicting/Web/Accessibility +/it/docs/Web/CSS/-moz-font-language-override /it/docs/Web/CSS/font-language-override /it/docs/Web/CSS/@-moz-document /it/docs/Web/CSS/@document -/it/docs/Web/CSS/Getting_Started /it/docs/Conoscere_i_CSS +/it/docs/Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes /it/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox +/it/docs/Web/CSS/Getting_Started /it/docs/Learn/CSS/First_steps +/it/docs/Web/CSS/Guida_di_riferimento_ai_CSS /it/docs/Web/CSS/Reference +/it/docs/Web/CSS/Ricette_layout /it/docs/Web/CSS/Layout_cookbook +/it/docs/Web/CSS/cursor/Usare_valori_URL_per_la_proprietà_cursor /it/docs/Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property +/it/docs/Web/CSS/selettore_figli_diretti /it/docs/Web/CSS/Child_combinator +/it/docs/Web/Esempi_di_tecnologie_web_open /it/docs/Web/Demos_of_open_web_technologies +/it/docs/Web/Events/DOMContentLoaded /it/docs/Web/API/Window/DOMContentLoaded_event /it/docs/Web/Events/devicemotion /it/docs/Web/API/Window/devicemotion_event +/it/docs/Web/Events/load /it/docs/Web/API/Window/load_event /it/docs/Web/Events/orientationchange /it/docs/Web/API/Window/orientationchange_event +/it/docs/Web/Guide/AJAX/Iniziare /it/docs/Web/Guide/AJAX/Getting_Started +/it/docs/Web/Guide/CSS /it/docs/conflicting/Learn/CSS /it/docs/Web/Guide/HTML /it/docs/Learn/HTML -/it/docs/Web/HTML/Aree_tematiche /it/docs/Web/Guide/HTML/Categorie_di_contenuto -/it/docs/Web/JavaScript/Guide /it/docs/Web/JavaScript/Guida +/it/docs/Web/Guide/HTML/Categorie_di_contenuto /it/docs/Web/Guide/HTML/Content_categories +/it/docs/Web/HTML/Aree_tematiche /it/docs/Web/Guide/HTML/Content_categories +/it/docs/Web/HTML/Attributi /it/docs/Web/HTML/Attributes +/it/docs/Web/HTML/Canvas /it/docs/Web/API/Canvas_API +/it/docs/Web/HTML/Canvas/Drawing_graphics_with_canvas /it/docs/conflicting/Web/API/Canvas_API/Tutorial +/it/docs/Web/HTML/Element/figura /it/docs/Web/HTML/Element/figure +/it/docs/Web/HTML/Forms_in_HTML /it/docs/orphaned/Learn/HTML/Forms/HTML5_updates +/it/docs/Web/HTML/HTML5 /it/docs/Web/Guide/HTML/HTML5 +/it/docs/Web/HTML/HTML5/Introduction_to_HTML5 /it/docs/Web/Guide/HTML/HTML5/Introduction_to_HTML5 +/it/docs/Web/HTML/Riferimento /it/docs/Web/HTML/Reference +/it/docs/Web/HTML/Sections_and_Outlines_of_an_HTML5_document /it/docs/Web/Guide/HTML/Using_HTML_sections_and_outlines +/it/docs/Web/HTML/utilizzare_application_cache /it/docs/Web/HTML/Using_the_application_cache +/it/docs/Web/HTTP/Basi_HTTP /it/docs/Web/HTTP/Basics_of_HTTP +/it/docs/Web/HTTP/Compressione /it/docs/Web/HTTP/Compression +/it/docs/Web/HTTP/Panoramica /it/docs/Web/HTTP/Overview +/it/docs/Web/HTTP/Richieste_range /it/docs/Web/HTTP/Range_requests +/it/docs/Web/HTTP/Sessione /it/docs/Web/HTTP/Session +/it/docs/Web/HTTP/negoziazione-del-contenuto /it/docs/Web/HTTP/Content_negotiation +/it/docs/Web/JavaScript/Chiusure /it/docs/Web/JavaScript/Closures +/it/docs/Web/JavaScript/Cosè_JavaScript /it/docs/Web/JavaScript/About_JavaScript +/it/docs/Web/JavaScript/Gestione_della_Memoria /it/docs/Web/JavaScript/Memory_Management +/it/docs/Web/JavaScript/Getting_Started /it/docs/conflicting/Learn/Getting_started_with_the_web/JavaScript_basics +/it/docs/Web/JavaScript/Guida /it/docs/Web/JavaScript/Guide +/it/docs/Web/JavaScript/Guida/Controllo_del_flusso_e_gestione_degli_errori /it/docs/Web/JavaScript/Guide/Control_flow_and_error_handling +/it/docs/Web/JavaScript/Guida/Dettagli_Object_Model /it/docs/Web/JavaScript/Guide/Details_of_the_Object_Model +/it/docs/Web/JavaScript/Guida/Espressioni_Regolari /it/docs/Web/JavaScript/Guide/Regular_Expressions +/it/docs/Web/JavaScript/Guida/Functions /it/docs/Web/JavaScript/Guide/Functions +/it/docs/Web/JavaScript/Guida/Grammar_and_types /it/docs/Web/JavaScript/Guide/Grammar_and_types +/it/docs/Web/JavaScript/Guida/Introduzione /it/docs/Web/JavaScript/Guide/Introduction +/it/docs/Web/JavaScript/Guida/Iteratori_e_generatori /it/docs/Web/JavaScript/Guide/Iterators_and_Generators +/it/docs/Web/JavaScript/Guida/Loops_and_iteration /it/docs/Web/JavaScript/Guide/Loops_and_iteration +/it/docs/Web/JavaScript/Il_DOM_e_JavaScript /it/docs/Web/JavaScript/JavaScript_technologies_overview +/it/docs/Web/JavaScript/Introduzione_al_carattere_Object-Oriented_di_JavaScript /it/docs/conflicting/Learn/JavaScript/Objects +/it/docs/Web/JavaScript/Reference/Classes/costruttore /it/docs/Web/JavaScript/Reference/Classes/constructor +/it/docs/Web/JavaScript/Reference/Functions_and_function_scope /it/docs/Web/JavaScript/Reference/Functions +/it/docs/Web/JavaScript/Reference/Functions_and_function_scope/Arrow_functions /it/docs/Web/JavaScript/Reference/Functions/Arrow_functions +/it/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments /it/docs/Web/JavaScript/Reference/Functions/arguments +/it/docs/Web/JavaScript/Reference/Functions_and_function_scope/get /it/docs/Web/JavaScript/Reference/Functions/get +/it/docs/Web/JavaScript/Reference/Functions_and_function_scope/set /it/docs/Web/JavaScript/Reference/Functions/set +/it/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype /it/docs/orphaned/Web/JavaScript/Reference/Global_Objects/Array/prototype +/it/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype /it/docs/conflicting/Web/JavaScript/Reference/Global_Objects/Object +/it/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler /it/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy +/it/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/apply /it/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/apply +/it/docs/Web/JavaScript/Reference/Global_Objects/Proxy/revocabile /it/docs/Web/JavaScript/Reference/Global_Objects/Proxy/revocable +/it/docs/Web/JavaScript/Reference/Global_Objects/String/prototype /it/docs/conflicting/Web/JavaScript/Reference/Global_Objects/String +/it/docs/Web/JavaScript/Reference/Operators/Operator_Condizionale /it/docs/Web/JavaScript/Reference/Operators/Conditional_Operator +/it/docs/Web/JavaScript/Reference/Operators/Operatore_virgola /it/docs/Web/JavaScript/Reference/Operators/Comma_Operator +/it/docs/Web/JavaScript/Reference/Operators/Operatori_Aritmetici /it/docs/conflicting/Web/JavaScript/Reference/Operators /it/docs/Web/JavaScript/Reference/Operators/Spread_operator /en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax +/it/docs/Web/JavaScript/Reference/template_strings /it/docs/Web/JavaScript/Reference/Template_literals +/it/docs/Web/JavaScript/Una_reintroduzione_al_JavaScript /it/docs/Web/JavaScript/A_re-introduction_to_JavaScript +/it/docs/Web/Performance/Percorso_critico_di_rendering /it/docs/Web/Performance/Critical_rendering_path +/it/docs/Web/Security/Password_insicure /it/docs/Web/Security/Insecure_passwords /it/docs/Web/WebGL /it/docs/Web/API/WebGL_API +/it/docs/Web/Web_Components/Usare_custom_elements /it/docs/Web/Web_Components/Using_custom_elements +/it/docs/WebSockets /it/docs/Web/API/WebSockets_API +/it/docs/WebSockets/Writing_WebSocket_client_applications /it/docs/Web/API/WebSockets_API/Writing_WebSocket_client_applications +/it/docs/Web_Development/Mobile /it/docs/Web/Guide/Mobile +/it/docs/Web_Development/Mobile/Design_sensibile /it/docs/Web/Progressive_web_apps +/it/docs/XHTML /it/docs/Glossary/XHTML /it/docs/XMLHttpRequest /it/docs/Web/API/XMLHttpRequest /it/docs/XPCOM:Binding_per_i_linguaggi /it/docs/XPCOM/Binding_per_i_linguaggi /it/docs/XSLT /it/docs/Web/XSLT /it/docs/en /en-US/ +/it/docs/window.find /it/docs/Web/API/Window/find diff --git a/files/it/_wikihistory.json b/files/it/_wikihistory.json index 02a3332341..eb1bf7ebb5 100644 --- a/files/it/_wikihistory.json +++ b/files/it/_wikihistory.json @@ -1,145 +1,4 @@ { - "Adattare_le_applicazioni_XUL_a_Firefox_1.5": { - "modified": "2019-03-23T23:41:34.028Z", - "contributors": [ - "wbamberg", - "Indigo" - ] - }, - "Circa_il_Document_Object_Model": { - "modified": "2019-03-23T23:40:46.607Z", - "contributors": [ - "teoli", - "DaViD83" - ] - }, - "Conoscere_i_CSS": { - "modified": "2019-03-23T23:43:26.363Z", - "contributors": [ - "libri-nozze", - "Davidee", - "Grino", - "Verruckt", - "Indigo" - ] - }, - "Conoscere_i_CSS/CSS_leggibili": { - "modified": "2019-03-23T23:43:30.247Z", - "contributors": [ - "Verruckt", - "Indigo" - ] - }, - "Conoscere_i_CSS/Cascata_ed_ereditarietà": { - "modified": "2019-03-23T23:44:51.382Z", - "contributors": [ - "Sheppy", - "Andrealibo", - "Verruckt", - "Indigo" - ] - }, - "Conoscere_i_CSS/Che_cosa_sono_i_CSS": { - "modified": "2019-03-23T23:43:28.433Z", - "contributors": [ - "pignaccia", - "Grino", - "Verruckt", - "Indigo" - ] - }, - "Conoscere_i_CSS/Come_funzionano_i_CSS": { - "modified": "2019-03-23T23:43:26.112Z", - "contributors": [ - "Verruckt", - "Indigo" - ] - }, - "Conoscere_i_CSS/I_Selettori": { - "modified": "2019-03-23T23:43:27.992Z", - "contributors": [ - "Verruckt", - "Indigo" - ] - }, - "Conoscere_i_CSS/Perché_usare_i_CSS": { - "modified": "2019-03-23T23:43:33.204Z", - "contributors": [ - "pignaccia", - "Verruckt", - "Indigo" - ] - }, - "Costruire_e_decostruire_un_documento_XML": { - "modified": "2019-03-24T00:13:01.603Z", - "contributors": [ - "fscholz", - "foto-planner", - "fusionchess" - ] - }, - "DHTML": { - "modified": "2019-03-24T00:02:50.459Z", - "contributors": [ - "teoli", - "fscholz", - "Samuele" - ] - }, - "DOM": { - "modified": "2019-03-24T00:03:02.057Z", - "contributors": [ - "teoli", - "Samuele", - "Grino", - "khela", - "Federico", - "DaViD83" - ] - }, - "DOM_Inspector": { - "modified": "2020-07-16T22:36:24.345Z", - "contributors": [ - "Federico", - "Leofiore", - "Samuele" - ] - }, - "Dare_una_mano_al_puntatore": { - "modified": "2019-03-23T23:43:11.495Z", - "contributors": [ - "teoli", - "ethertank", - "bradipao" - ] - }, - "Firefox_1.5_per_Sviluppatori": { - "modified": "2019-03-23T23:44:26.825Z", - "contributors": [ - "wbamberg", - "teoli", - "Leofiore", - "Federico" - ] - }, - "Firefox_18_for_developers": { - "modified": "2019-03-23T23:34:04.358Z", - "contributors": [ - "wbamberg", - "Indil", - "0limits91" - ] - }, - "Firefox_2.0_per_Sviluppatori": { - "modified": "2019-03-23T23:44:14.083Z", - "contributors": [ - "wbamberg", - "Leofiore", - "Samuele", - "Federico", - "Neotux" - ] - }, "Games": { "modified": "2019-09-09T15:32:14.707Z", "contributors": [ @@ -156,14 +15,6 @@ "Antonio-Caminiti" ] }, - "Gli_User_Agent_di_Gecko": { - "modified": "2019-03-23T23:44:58.670Z", - "contributors": [ - "fotografi", - "teoli", - "Federico" - ] - }, "Glossary": { "modified": "2020-10-07T11:11:11.203Z", "contributors": [ @@ -243,12 +94,6 @@ "gnardell" ] }, - "Glossary/Header_di_risposta": { - "modified": "2019-03-18T21:31:16.700Z", - "contributors": [ - "lucat92" - ] - }, "Glossary/Hoisting": { "modified": "2020-07-09T10:59:09.829Z", "contributors": [ @@ -286,13 +131,6 @@ "Fredev" ] }, - "Glossary/Protocollo": { - "modified": "2020-04-21T13:55:15.140Z", - "contributors": [ - "sara_t", - "xplosionmind" - ] - }, "Glossary/REST": { "modified": "2020-04-21T13:56:38.394Z", "contributors": [ @@ -331,34 +169,6 @@ "nicolo-ribaudo" ] }, - "Indentazione_corretta_delle_liste": { - "modified": "2019-03-23T23:43:02.621Z", - "contributors": [ - "music-wedding", - "artistics-weddings", - "teoli", - "bradipao" - ] - }, - "Installare_plugin_di_ricerca_dalle_pagine_web": { - "modified": "2019-01-16T16:19:44.703Z", - "contributors": [ - "Federico" - ] - }, - "Introduzione_a_SVG_dentro_XHTML": { - "modified": "2019-03-23T23:41:29.996Z", - "contributors": [ - "teoli", - "Federico" - ] - }, - "Le_Colonne_nei_CSS3": { - "modified": "2019-03-23T23:43:04.536Z", - "contributors": [ - "bradipao" - ] - }, "Learn": { "modified": "2020-07-16T22:43:43.043Z", "contributors": [ @@ -368,54 +178,6 @@ "MarcoMatta" ] }, - "Learn/Accessibilità": { - "modified": "2020-07-16T22:39:57.773Z", - "contributors": [ - "mipo" - ] - }, - "Learn/Accessibilità/Accessibilità_dispositivi_mobili": { - "modified": "2020-07-16T22:40:30.564Z", - "contributors": [ - "mipo" - ] - }, - "Learn/Accessibilità/Accessibilità_test_risoluzione_problemi": { - "modified": "2020-07-16T22:40:35.761Z", - "contributors": [ - "mipo" - ] - }, - "Learn/Accessibilità/CSS_e_JavaScript_accessibilità": { - "modified": "2020-07-16T22:40:17.303Z", - "contributors": [ - "mipo" - ] - }, - "Learn/Accessibilità/Cosa_è_accessibilità": { - "modified": "2020-07-16T22:40:04.717Z", - "contributors": [ - "mipo" - ] - }, - "Learn/Accessibilità/HTML_accessibilità": { - "modified": "2020-07-16T22:40:11.165Z", - "contributors": [ - "mipo" - ] - }, - "Learn/Accessibilità/Multimedia": { - "modified": "2020-07-16T22:40:26.699Z", - "contributors": [ - "mipo" - ] - }, - "Learn/Accessibilità/WAI-ARIA_basics": { - "modified": "2020-07-16T22:40:22.345Z", - "contributors": [ - "mipo" - ] - }, "Learn/CSS": { "modified": "2020-11-02T07:57:14.931Z", "contributors": [ @@ -435,12 +197,6 @@ "chrisdavidmills" ] }, - "Learn/CSS/Building_blocks/Selettori": { - "modified": "2020-10-27T14:47:40.269Z", - "contributors": [ - "francescomazza91" - ] - }, "Learn/CSS/Building_blocks/Styling_tables": { "modified": "2020-07-16T22:28:16.589Z", "contributors": [ @@ -482,20 +238,6 @@ "wilton-cruz" ] }, - "Learn/CSS/Styling_text/Definire_stili_link": { - "modified": "2020-07-16T22:26:19.044Z", - "contributors": [ - "genoa1893" - ] - }, - "Learn/Come_contribuire": { - "modified": "2020-07-16T22:33:44.464Z", - "contributors": [ - "SphinxKnight", - "ZiaRita", - "ivan.lori" - ] - }, "Learn/Common_questions": { "modified": "2020-07-16T22:35:24.563Z", "contributors": [ @@ -526,28 +268,6 @@ "howilearn" ] }, - "Learn/Getting_started_with_the_web/Che_aspetto_avrà_il_tuo_sito_web": { - "modified": "2020-07-16T22:34:17.256Z", - "contributors": [ - "PyQio" - ] - }, - "Learn/Getting_started_with_the_web/Come_funziona_il_Web": { - "modified": "2020-11-10T20:12:58.028Z", - "contributors": [ - "massic80", - "JennyDC" - ] - }, - "Learn/Getting_started_with_the_web/Gestire_i_file": { - "modified": "2020-07-16T22:34:34.196Z", - "contributors": [ - "ZiaRita", - "PatrickT", - "DaniPani", - "cubark" - ] - }, "Learn/Getting_started_with_the_web/HTML_basics": { "modified": "2020-11-14T17:53:13.393Z", "contributors": [ @@ -574,13 +294,6 @@ "mnemosdev" ] }, - "Learn/Getting_started_with_the_web/Pubbicare_sito": { - "modified": "2020-07-30T14:39:28.232Z", - "contributors": [ - "sara_t", - "dag7dev" - ] - }, "Learn/HTML": { "modified": "2020-07-16T22:22:18.921Z", "contributors": [ @@ -588,30 +301,10 @@ "Ella" ] }, - "Learn/HTML/Forms": { - "modified": "2020-10-05T13:36:42.596Z", + "Learn/HTML/Howto": { + "modified": "2020-07-16T22:22:29.048Z", "contributors": [ - "ArgusMk", - "Jeffrey_Yang" - ] - }, - "Learn/HTML/Forms/Come_costruire_custom_form_widgets_personalizzati": { - "modified": "2020-07-16T22:21:56.435Z", - "contributors": [ - "whiteLie" - ] - }, - "Learn/HTML/Forms/Form_validation": { - "modified": "2020-12-03T10:32:19.605Z", - "contributors": [ - "LoSo", - "claudiod" - ] - }, - "Learn/HTML/Howto": { - "modified": "2020-07-16T22:22:29.048Z", - "contributors": [ - "chrisdavidmills" + "chrisdavidmills" ] }, "Learn/HTML/Howto/Author_fast-loading_HTML_pages": { @@ -620,13 +313,6 @@ "ladysilvia" ] }, - "Learn/HTML/Howto/Uso_attributi_data": { - "modified": "2020-07-16T22:22:35.395Z", - "contributors": [ - "Elfo404", - "Enrico_Polanski" - ] - }, "Learn/HTML/Introduction_to_HTML": { "modified": "2020-07-16T22:22:49.350Z", "contributors": [ @@ -647,22 +333,6 @@ "howilearn" ] }, - "Learn/HTML/Introduction_to_HTML/I_metadata_nella_head_in_HTML": { - "modified": "2020-07-16T22:23:20.000Z", - "contributors": [ - "Aedo1", - "howilearn" - ] - }, - "Learn/HTML/Introduction_to_HTML/fondamenti_di_testo_html": { - "modified": "2020-07-16T22:23:34.063Z", - "contributors": [ - "b4yl0n", - "duduindo", - "Th3cG", - "robertsillo" - ] - }, "Learn/HTML/Multimedia_and_embedding": { "modified": "2020-07-16T22:24:26.195Z", "contributors": [ @@ -677,27 +347,6 @@ "howilearn" ] }, - "Learn/HTML/Multimedia_and_embedding/contenuti_video_e_audio": { - "modified": "2020-07-16T22:24:53.308Z", - "contributors": [ - "howilearn" - ] - }, - "Learn/HTML/Multimedia_and_embedding/immagini_reattive": { - "modified": "2020-07-16T22:24:35.114Z", - "contributors": [ - "kalamun", - "howilearn" - ] - }, - "Learn/HTML/Scrivi_una_semplice_pagina_in_HTML": { - "modified": "2020-07-16T22:22:27.063Z", - "contributors": [ - "duduindo", - "wbamberg", - "Ella" - ] - }, "Learn/HTML/Tables": { "modified": "2020-07-16T22:25:12.659Z", "contributors": [ @@ -720,12 +369,6 @@ "chrisdavidmills" ] }, - "Learn/JavaScript/Comefare": { - "modified": "2020-07-16T22:33:09.378Z", - "contributors": [ - "mario.dilodovico1" - ] - }, "Learn/JavaScript/First_steps": { "modified": "2020-07-16T22:29:52.003Z", "contributors": [ @@ -734,40 +377,6 @@ "Elllenn" ] }, - "Learn/JavaScript/First_steps/Cosa_è_andato_storto": { - "modified": "2020-07-16T22:30:33.953Z", - "contributors": [ - "rosso791" - ] - }, - "Learn/JavaScript/First_steps/Variabili": { - "modified": "2020-08-19T06:27:13.303Z", - "contributors": [ - "a.ros", - "SamuelaKC", - "Ibernato93" - ] - }, - "Learn/JavaScript/Oggetti": { - "modified": "2020-07-16T22:31:50.631Z", - "contributors": [ - "maboglia", - "s3lvatico" - ] - }, - "Learn/JavaScript/Oggetti/Basics": { - "modified": "2020-07-16T22:31:59.612Z", - "contributors": [ - "dq82elo", - "claudiod" - ] - }, - "Learn/JavaScript/Oggetti/JSON": { - "modified": "2020-07-16T22:32:26.492Z", - "contributors": [ - "mario.dilodovico1" - ] - }, "Learn/Server-side": { "modified": "2020-07-16T22:35:58.950Z", "contributors": [ @@ -822,15 +431,6 @@ "mattiatoselli" ] }, - "Learn/Server-side/Django/Introduzione": { - "modified": "2020-10-29T07:11:12.599Z", - "contributors": [ - "sara_t", - "dag7dev", - "gianluca.gioino", - "CristinaS24" - ] - }, "Learn/Server-side/Django/Models": { "modified": "2020-07-16T22:36:57.781Z", "contributors": [ @@ -875,25 +475,6 @@ "mattiatoselli" ] }, - "Link_prefetching_FAQ": { - "modified": "2019-03-23T23:44:25.588Z", - "contributors": [ - "fscholz", - "artistics-weddings", - "jigs12", - "Leofiore" - ] - }, - "Localization": { - "modified": "2019-03-23T23:44:27.139Z", - "contributors": [ - "teoli", - "Verruckt", - "Leofiore", - "Etms", - "Federico" - ] - }, "MDN": { "modified": "2019-09-10T15:42:00.204Z", "contributors": [ @@ -915,14 +496,6 @@ "klez" ] }, - "MDN/Community": { - "modified": "2019-03-23T22:36:02.220Z", - "contributors": [ - "Italuil", - "wbamberg", - "Vinsala" - ] - }, "MDN/Contribute": { "modified": "2019-03-23T23:18:14.834Z", "contributors": [ @@ -931,15 +504,6 @@ "Sheppy" ] }, - "MDN/Contribute/Creating_and_editing_pages": { - "modified": "2019-03-23T23:06:13.182Z", - "contributors": [ - "wbamberg", - "fabriziobianchi3", - "claudio.mantuano", - "Sav_" - ] - }, "MDN/Contribute/Feedback": { "modified": "2020-09-30T17:51:21.113Z", "contributors": [ @@ -979,36 +543,6 @@ "nicokant" ] }, - "MDN/Contribute/Howto/Create_an_MDN_account": { - "modified": "2019-01-16T19:06:05.374Z", - "contributors": [ - "ladysilvia", - "wbamberg", - "plovec", - "klez" - ] - }, - "MDN/Contribute/Howto/Delete_my_profile": { - "modified": "2020-10-21T23:15:42.235Z", - "contributors": [ - "FrancescoCoding" - ] - }, - "MDN/Contribute/Howto/Do_a_technical_review": { - "modified": "2019-01-16T19:16:55.097Z", - "contributors": [ - "wbamberg", - "klez" - ] - }, - "MDN/Contribute/Howto/Do_an_editorial_review": { - "modified": "2019-03-23T23:10:59.000Z", - "contributors": [ - "wbamberg", - "mat.campanelli", - "Navy60" - ] - }, "MDN/Contribute/Howto/Tag": { "modified": "2020-07-29T06:42:10.343Z", "contributors": [ @@ -1020,22 +554,6 @@ "Originalsin8" ] }, - "MDN/Contribute/Howto/impostare_il_riassunto_di_una_pagina": { - "modified": "2019-03-23T23:07:02.988Z", - "contributors": [ - "wbamberg", - "Enrico12" - ] - }, - "MDN/Editor": { - "modified": "2020-09-30T15:41:34.289Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "klez", - "turco" - ] - }, "MDN/Guidelines": { "modified": "2020-09-30T15:30:11.537Z", "contributors": [ @@ -1044,22 +562,6 @@ "Sheppy" ] }, - "MDN/Guidelines/Macros": { - "modified": "2020-09-30T15:30:11.714Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "frbi" - ] - }, - "MDN/Guidelines/Migliore_pratica": { - "modified": "2020-09-30T15:30:11.829Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "Giacomo_" - ] - }, "MDN/Structures": { "modified": "2020-09-30T09:07:10.947Z", "contributors": [ @@ -1068,24 +570,6 @@ "jswisher" ] }, - "MDN/Structures/Tabelle_compatibilità": { - "modified": "2020-10-15T22:03:08.289Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "PsCustomObject", - "Carlo-Effe" - ] - }, - "MDN_at_ten": { - "modified": "2019-03-23T22:42:30.395Z", - "contributors": [ - "foto-planner", - "Vinsala", - "Redsnic", - "Lorenzo_FF" - ] - }, "Mozilla": { "modified": "2019-03-23T23:36:49.678Z", "contributors": [ @@ -1142,24 +626,6 @@ "MarcoAGreco" ] }, - "Mozilla/Add-ons/WebExtensions/Cosa_sono_le_WebExtensions": { - "modified": "2019-03-18T21:03:03.594Z", - "contributors": [ - "chack1172" - ] - }, - "Mozilla/Add-ons/WebExtensions/La_tua_prima_WebExtension": { - "modified": "2019-03-18T21:03:00.548Z", - "contributors": [ - "chack1172" - ] - }, - "Mozilla/Add-ons/WebExtensions/Script_contenuto": { - "modified": "2019-06-07T12:34:39.378Z", - "contributors": [ - "MarcoAGreco" - ] - }, "Mozilla/Add-ons/WebExtensions/user_interface": { "modified": "2019-06-07T11:18:06.662Z", "contributors": [ @@ -1184,12 +650,6 @@ "Prashanth" ] }, - "Mozilla/Firefox/Funzionalità_sperimentali": { - "modified": "2020-07-01T10:55:50.190Z", - "contributors": [ - "Karm46" - ] - }, "Mozilla/Firefox/Releases": { "modified": "2019-03-23T23:26:09.968Z", "contributors": [ @@ -1233,40 +693,6 @@ "rcondor" ] }, - "Plug-in": { - "modified": "2019-03-23T23:42:05.451Z", - "contributors": [ - "teoli", - "Samuele", - "Gialloporpora" - ] - }, - "Python": { - "modified": "2019-03-23T23:07:51.453Z", - "contributors": [ - "foto-planner", - "domcorvasce" - ] - }, - "SVG": { - "modified": "2019-03-23T23:44:24.568Z", - "contributors": [ - "sangio90", - "teoli", - "janvas", - "Grino", - "ethertank", - "Verruckt", - "DaViD83", - "Federico" - ] - }, - "Sviluppo_Web": { - "modified": "2019-03-23T23:44:27.263Z", - "contributors": [ - "Leofiore" - ] - }, "Tools": { "modified": "2020-07-16T22:44:15.461Z", "contributors": [ @@ -1282,12 +708,6 @@ "dinoop.p1" ] }, - "Tools/Add-ons": { - "modified": "2020-07-16T22:36:23.403Z", - "contributors": [ - "mfluehr" - ] - }, "Tools/Debugger": { "modified": "2020-07-16T22:35:04.703Z", "contributors": [ @@ -1338,14 +758,8 @@ "MicheleRiva" ] }, - "Tools/Prestazioni": { - "modified": "2020-07-16T22:36:12.757Z", - "contributors": [ - "Jackerbil" - ] - }, - "Tools/Remote_Debugging": { - "modified": "2020-07-16T22:35:37.452Z", + "Tools/Remote_Debugging": { + "modified": "2020-07-16T22:35:37.452Z", "contributors": [ "Mte90", "BruVe", @@ -1356,12 +770,6 @@ "davanzo_m" ] }, - "Tools/Visualizzazione_Flessibile": { - "modified": "2020-07-16T22:35:21.469Z", - "contributors": [ - "tassoman" - ] - }, "Tools/Web_Console": { "modified": "2020-07-16T22:34:06.052Z", "contributors": [ @@ -1376,18 +784,6 @@ "CRONOtime" ] }, - "Tutorial_sulle_Canvas": { - "modified": "2019-03-23T23:52:28.960Z", - "contributors": [ - "Romanzo", - "fotografi", - "Arset", - "teoli", - "Mmarco", - "Indigo", - "Fuma 90" - ] - }, "Web": { "modified": "2020-09-09T03:14:54.712Z", "contributors": [ @@ -1596,13 +992,6 @@ "Federico" ] }, - "Web/API/Document/firstChild": { - "modified": "2019-03-23T23:45:06.385Z", - "contributors": [ - "teoli", - "Federico" - ] - }, "Web/API/Document/forms": { "modified": "2020-10-15T21:18:07.841Z", "contributors": [ @@ -1682,13 +1071,6 @@ "Federico" ] }, - "Web/API/Document/namespaceURI": { - "modified": "2019-03-23T23:45:08.038Z", - "contributors": [ - "teoli", - "Federico" - ] - }, "Web/API/Document/open": { "modified": "2019-03-23T23:46:30.372Z", "contributors": [ @@ -1720,14 +1102,6 @@ "Federico" ] }, - "Web/API/Document/styleSheets": { - "modified": "2019-03-23T23:46:31.284Z", - "contributors": [ - "teoli", - "khalid32", - "Federico" - ] - }, "Web/API/Document/title": { "modified": "2019-03-23T23:44:54.978Z", "contributors": [ @@ -1762,12 +1136,6 @@ "SuperBisco" ] }, - "Web/API/Document_Object_Model/Introduzione": { - "modified": "2020-02-23T14:30:00.735Z", - "contributors": [ - "giacomomaccanti" - ] - }, "Web/API/Document_Object_Model/Locating_DOM_elements_using_selectors": { "modified": "2019-03-18T21:19:09.556Z", "contributors": [ @@ -1784,20 +1152,6 @@ "DaViD83" ] }, - "Web/API/Element/addEventListener": { - "modified": "2020-10-15T21:07:44.354Z", - "contributors": [ - "IsibisiDev", - "akmur", - "gitact", - "vindega", - "teoli", - "khalid32", - "loris94", - "Samuele", - "DaViD83" - ] - }, "Web/API/Element/attributes": { "modified": "2020-10-15T21:18:26.646Z", "contributors": [ @@ -1807,17 +1161,6 @@ "DaViD83" ] }, - "Web/API/Element/childNodes": { - "modified": "2020-10-15T21:18:25.382Z", - "contributors": [ - "IsibisiDev", - "stefanoio", - "render93", - "teoli", - "AshfaqHossain", - "DaViD83" - ] - }, "Web/API/Element/classList": { "modified": "2020-10-15T22:08:44.689Z", "contributors": [ @@ -1849,18 +1192,6 @@ "IsibisiDev" ] }, - "Web/API/Element/firstChild": { - "modified": "2020-10-15T21:18:24.892Z", - "contributors": [ - "IsibisiDev", - "wbamberg", - "render93", - "teoli", - "khalid32", - "Sheppy", - "DaViD83" - ] - }, "Web/API/Element/getAttribute": { "modified": "2020-10-15T22:12:34.368Z", "contributors": [ @@ -1905,53 +1236,6 @@ "marcozanghi" ] }, - "Web/API/Element/nodeName": { - "modified": "2020-10-15T21:17:56.733Z", - "contributors": [ - "IsibisiDev", - "teoli", - "jsx", - "AshfaqHossain", - "Federico" - ] - }, - "Web/API/Element/nodeType": { - "modified": "2020-10-15T21:17:56.649Z", - "contributors": [ - "IsibisiDev", - "DavideCanton", - "teoli", - "khalid32", - "ethertank", - "Federico" - ] - }, - "Web/API/Element/nodeValue": { - "modified": "2019-03-24T00:13:06.084Z", - "contributors": [ - "teoli", - "jsx", - "dextra", - "Federico" - ] - }, - "Web/API/Element/parentNode": { - "modified": "2020-10-15T21:17:57.762Z", - "contributors": [ - "IsibisiDev", - "teoli", - "jsx", - "Federico" - ] - }, - "Web/API/Element/prefix": { - "modified": "2019-03-23T23:47:01.925Z", - "contributors": [ - "teoli", - "jsx", - "Federico" - ] - }, "Web/API/Element/querySelector": { "modified": "2020-10-15T22:12:29.147Z", "contributors": [ @@ -2006,16 +1290,6 @@ "Shabunken" ] }, - "Web/API/Element/textContent": { - "modified": "2020-10-15T21:17:56.553Z", - "contributors": [ - "LoSo", - "IsibisiDev", - "teoli", - "khalid32", - "Federico" - ] - }, "Web/API/Element/toggleAttribute": { "modified": "2020-10-15T22:14:01.364Z", "contributors": [ @@ -2030,14 +1304,6 @@ "Federico" ] }, - "Web/API/Event/altKey": { - "modified": "2019-03-23T23:46:44.336Z", - "contributors": [ - "teoli", - "jsx", - "Federico" - ] - }, "Web/API/Event/bubbles": { "modified": "2019-03-23T23:46:36.123Z", "contributors": [ @@ -2046,14 +1312,6 @@ "Federico" ] }, - "Web/API/Event/button": { - "modified": "2019-03-23T23:46:37.711Z", - "contributors": [ - "teoli", - "khalid32", - "Federico" - ] - }, "Web/API/Event/cancelable": { "modified": "2019-03-23T23:46:38.519Z", "contributors": [ @@ -2062,22 +1320,6 @@ "Federico" ] }, - "Web/API/Event/charCode": { - "modified": "2019-03-23T23:46:31.812Z", - "contributors": [ - "teoli", - "khalid32", - "Federico" - ] - }, - "Web/API/Event/ctrlKey": { - "modified": "2019-03-23T23:46:43.027Z", - "contributors": [ - "teoli", - "khalid32", - "Federico" - ] - }, "Web/API/Event/currentTarget": { "modified": "2019-03-23T22:47:05.735Z", "contributors": [ @@ -2092,62 +1334,6 @@ "Federico" ] }, - "Web/API/Event/isChar": { - "modified": "2019-03-23T23:46:41.517Z", - "contributors": [ - "teoli", - "xuancanh", - "Federico" - ] - }, - "Web/API/Event/keyCode": { - "modified": "2019-03-23T23:46:33.218Z", - "contributors": [ - "teoli", - "xuancanh", - "Federico" - ] - }, - "Web/API/Event/layerX": { - "modified": "2019-03-23T23:46:44.079Z", - "contributors": [ - "teoli", - "jsx", - "Federico" - ] - }, - "Web/API/Event/layerY": { - "modified": "2019-03-23T23:46:42.670Z", - "contributors": [ - "teoli", - "khalid32", - "Federico" - ] - }, - "Web/API/Event/metaKey": { - "modified": "2019-03-23T23:46:45.023Z", - "contributors": [ - "teoli", - "khalid32", - "Federico" - ] - }, - "Web/API/Event/pageX": { - "modified": "2019-03-23T23:46:41.625Z", - "contributors": [ - "teoli", - "jsx", - "Federico" - ] - }, - "Web/API/Event/pageY": { - "modified": "2019-03-23T23:46:46.107Z", - "contributors": [ - "teoli", - "jsx", - "Federico" - ] - }, "Web/API/Event/preventDefault": { "modified": "2020-10-15T21:17:58.593Z", "contributors": [ @@ -2158,14 +1344,6 @@ "Federico" ] }, - "Web/API/Event/shiftKey": { - "modified": "2019-03-23T23:46:40.291Z", - "contributors": [ - "teoli", - "jsx", - "Federico" - ] - }, "Web/API/Event/stopPropagation": { "modified": "2020-10-15T21:17:59.102Z", "contributors": [ @@ -2192,22 +1370,6 @@ "Federico" ] }, - "Web/API/Event/view": { - "modified": "2019-03-23T23:46:31.176Z", - "contributors": [ - "teoli", - "khalid32", - "Federico" - ] - }, - "Web/API/Event/which": { - "modified": "2019-03-23T23:46:32.154Z", - "contributors": [ - "teoli", - "jsx", - "Federico" - ] - }, "Web/API/Fetch_API": { "modified": "2019-10-28T11:29:11.758Z", "contributors": [ @@ -2234,12 +1396,6 @@ "robertopinotti" ] }, - "Web/API/Geolocation/Using_geolocation": { - "modified": "2019-03-18T21:46:47.006Z", - "contributors": [ - "robertopinotti" - ] - }, "Web/API/Geolocation/watchPosition": { "modified": "2019-03-18T21:46:55.440Z", "contributors": [ @@ -2907,12 +2063,6 @@ "robertopinotti" ] }, - "Web/API/URLUtils": { - "modified": "2019-03-23T23:01:38.757Z", - "contributors": [ - "teoli" - ] - }, "Web/API/WebGL_API": { "modified": "2020-10-15T22:34:13.570Z", "contributors": [ @@ -3207,18 +2357,6 @@ "iruy" ] }, - "Web/API/WindowTimers": { - "modified": "2019-03-23T22:33:10.851Z", - "contributors": [ - "aragacalledpat" - ] - }, - "Web/API/WindowTimers/clearInterval": { - "modified": "2019-03-23T22:33:02.364Z", - "contributors": [ - "lorenzopieri" - ] - }, "Web/API/Worker": { "modified": "2020-10-15T22:05:05.715Z", "contributors": [ @@ -3235,15 +2373,6 @@ "Federico" ] }, - "Web/API/XMLHttpRequest/Usare_XMLHttpRequest": { - "modified": "2019-09-22T07:49:44.300Z", - "contributors": [ - "chkrr00k", - "valerio-bozzolan", - "teoli", - "Andrea_Barghigiani" - ] - }, "Web/API/XMLHttpRequest/XMLHttpRequest": { "modified": "2020-01-22T12:40:19.899Z", "contributors": [ @@ -3268,19 +2397,6 @@ "fedebamba" ] }, - "Web/API/notifiche": { - "modified": "2019-03-18T20:57:39.827Z", - "contributors": [ - "francymin", - "Mascare" - ] - }, - "Web/API/notifiche/dir": { - "modified": "2020-10-15T22:17:29.488Z", - "contributors": [ - "Belingheri" - ] - }, "Web/Accessibility": { "modified": "2019-09-09T14:13:55.035Z", "contributors": [ @@ -3290,12 +2406,6 @@ "klez" ] }, - "Web/Accessibility/Sviluppo_Web": { - "modified": "2019-03-23T23:18:40.805Z", - "contributors": [ - "klez" - ] - }, "Web/CSS": { "modified": "2020-01-15T05:51:31.675Z", "contributors": [ @@ -3313,13 +2423,6 @@ "DaViD83" ] }, - "Web/CSS/-moz-font-language-override": { - "modified": "2019-03-23T23:28:40.117Z", - "contributors": [ - "teoli", - "lboy" - ] - }, "Web/CSS/-webkit-overflow-scrolling": { "modified": "2020-10-15T22:09:13.015Z", "contributors": [ @@ -3403,15 +2506,6 @@ "teoli" ] }, - "Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes": { - "modified": "2019-03-18T20:58:13.071Z", - "contributors": [ - "KadirTopal", - "ATrogolo", - "fscholz", - "Renatvs88" - ] - }, "Web/CSS/CSS_Positioning": { "modified": "2020-05-29T22:27:05.116Z" }, @@ -3424,16 +2518,6 @@ "itektopdesigner" ] }, - "Web/CSS/Guida_di_riferimento_ai_CSS": { - "modified": "2020-04-22T10:36:23.257Z", - "contributors": [ - "xplosionmind", - "Pardoz", - "teoli", - "tregagnon", - "Federico" - ] - }, "Web/CSS/Media_Queries": { "modified": "2019-03-23T22:04:20.173Z", "contributors": [ @@ -3453,12 +2537,6 @@ "Pardoz" ] }, - "Web/CSS/Ricette_layout": { - "modified": "2019-03-18T21:23:52.893Z", - "contributors": [ - "Yoekkul" - ] - }, "Web/CSS/Type_selectors": { "modified": "2020-10-15T22:29:37.496Z", "contributors": [ @@ -3559,13 +2637,6 @@ "claudepache" ] }, - "Web/CSS/cursor/Usare_valori_URL_per_la_proprietà_cursor": { - "modified": "2019-03-23T23:43:56.513Z", - "contributors": [ - "teoli", - "Leofiore" - ] - }, "Web/CSS/flex": { "modified": "2019-03-23T22:48:31.643Z", "contributors": [ @@ -3597,12 +2668,6 @@ "arturu" ] }, - "Web/CSS/selettore_figli_diretti": { - "modified": "2019-03-23T22:33:41.612Z", - "contributors": [ - "ExplosiveLab" - ] - }, "Web/CSS/text-align": { "modified": "2019-03-23T23:54:00.082Z", "contributors": [ @@ -3645,12 +2710,6 @@ "tallaGitHub" ] }, - "Web/Esempi_di_tecnologie_web_open": { - "modified": "2019-03-23T22:06:33.966Z", - "contributors": [ - "siron94" - ] - }, "Web/Events": { "modified": "2019-04-30T14:19:44.404Z", "contributors": [ @@ -3658,24 +2717,6 @@ "bep" ] }, - "Web/Events/DOMContentLoaded": { - "modified": "2020-10-15T22:04:24.853Z", - "contributors": [ - "IsibisiDev", - "wbamberg", - "bolste" - ] - }, - "Web/Events/load": { - "modified": "2019-04-30T14:10:24.678Z", - "contributors": [ - "wbamberg", - "IsibisiDev", - "sickDevelopers", - "fscholz", - "lucamemma" - ] - }, "Web/Guide": { "modified": "2019-03-23T23:29:02.031Z", "contributors": [ @@ -3692,14 +2733,6 @@ "Federico" ] }, - "Web/Guide/AJAX/Iniziare": { - "modified": "2019-03-23T23:41:32.850Z", - "contributors": [ - "chrisdavidmills", - "Mattia_Zanella", - "Federico" - ] - }, "Web/Guide/API": { "modified": "2019-09-11T09:42:07.898Z", "contributors": [ @@ -3707,12 +2740,6 @@ "Sheppy" ] }, - "Web/Guide/CSS": { - "modified": "2019-03-23T23:29:02.257Z", - "contributors": [ - "Sheppy" - ] - }, "Web/Guide/Graphics": { "modified": "2019-03-23T22:54:59.847Z", "contributors": [ @@ -3722,16 +2749,6 @@ "arc551" ] }, - "Web/Guide/HTML/Categorie_di_contenuto": { - "modified": "2019-03-23T23:34:44.540Z", - "contributors": [ - "Sebastianz", - "Ella", - "nicolo-ribaudo", - "teoli", - "Nicola_D" - ] - }, "Web/Guide/HTML/Editable_content": { "modified": "2019-03-23T22:02:08.397Z", "contributors": [ @@ -3772,30 +2789,6 @@ "DaViD83" ] }, - "Web/HTML/Attributi": { - "modified": "2019-03-23T23:34:35.010Z", - "contributors": [ - "teoli", - "Nicola_D" - ] - }, - "Web/HTML/Canvas": { - "modified": "2019-09-27T19:03:03.922Z", - "contributors": [ - "NeckersBOX", - "nataz77", - "teoli", - "Grino", - "mck89" - ] - }, - "Web/HTML/Canvas/Drawing_graphics_with_canvas": { - "modified": "2019-03-23T23:15:33.594Z", - "contributors": [ - "teoli", - "MrNow" - ] - }, "Web/HTML/Element": { "modified": "2019-03-23T23:34:47.626Z", "contributors": [ @@ -3982,12 +2975,6 @@ "Enrico_Polanski" ] }, - "Web/HTML/Element/figura": { - "modified": "2020-10-15T22:23:23.465Z", - "contributors": [ - "NeckersBOX" - ] - }, "Web/HTML/Element/footer": { "modified": "2019-03-23T22:58:06.411Z", "contributors": [ @@ -4141,13 +3128,6 @@ "nicolo-ribaudo" ] }, - "Web/HTML/Forms_in_HTML": { - "modified": "2019-03-23T23:29:43.061Z", - "contributors": [ - "teoli", - "Giona" - ] - }, "Web/HTML/Global_attributes": { "modified": "2019-03-23T23:16:28.665Z", "contributors": [ @@ -4161,49 +3141,6 @@ "sambuccid" ] }, - "Web/HTML/HTML5": { - "modified": "2019-03-23T23:35:35.217Z", - "contributors": [ - "artistics-weddings", - "teoli", - "bertuz83", - "Giona", - "Mattei", - "Grino" - ] - }, - "Web/HTML/HTML5/Introduction_to_HTML5": { - "modified": "2019-03-23T23:29:36.115Z", - "contributors": [ - "teoli", - "bertuz", - "Giona" - ] - }, - "Web/HTML/Riferimento": { - "modified": "2019-09-09T07:18:46.738Z", - "contributors": [ - "SphinxKnight", - "wbamberg", - "LoSo" - ] - }, - "Web/HTML/Sections_and_Outlines_of_an_HTML5_document": { - "modified": "2019-03-23T23:29:51.242Z", - "contributors": [ - "teoli", - "Giona" - ] - }, - "Web/HTML/utilizzare_application_cache": { - "modified": "2019-03-23T23:28:46.240Z", - "contributors": [ - "Carlo-Effe", - "g4b0", - "teoli", - "pastorello" - ] - }, "Web/HTTP": { "modified": "2019-03-18T21:00:54.655Z", "contributors": [ @@ -4218,13 +3155,6 @@ "meogrande" ] }, - "Web/HTTP/Basi_HTTP": { - "modified": "2020-11-30T09:32:11.577Z", - "contributors": [ - "MatteoZxy", - "giuseppe.librandi02" - ] - }, "Web/HTTP/CORS": { "modified": "2020-10-15T22:09:12.111Z", "contributors": [ @@ -4259,14 +3189,6 @@ "Wilkenfeld" ] }, - "Web/HTTP/Compressione": { - "modified": "2020-11-30T09:31:19.301Z", - "contributors": [ - "davide.martinelli13", - "lucathetiger96.96", - "SphinxKnight" - ] - }, "Web/HTTP/Conditional_requests": { "modified": "2020-12-05T07:29:03.909Z", "contributors": [ @@ -4346,13 +3268,6 @@ "meliot" ] }, - "Web/HTTP/Panoramica": { - "modified": "2020-11-08T15:52:52.082Z", - "contributors": [ - "meogrande", - "abatti" - ] - }, "Web/HTTP/Protocol_upgrade_mechanism": { "modified": "2020-11-30T09:35:43.369Z", "contributors": [ @@ -4375,18 +3290,6 @@ "EnricoDant3" ] }, - "Web/HTTP/Richieste_range": { - "modified": "2019-08-03T05:17:24.435Z", - "contributors": [ - "theborgh" - ] - }, - "Web/HTTP/Sessione": { - "modified": "2020-11-29T21:39:50.877Z", - "contributors": [ - "zambonmichelethanu" - ] - }, "Web/HTTP/Status": { "modified": "2019-03-23T22:02:43.572Z", "contributors": [ @@ -4431,13 +3334,6 @@ "damis0g" ] }, - "Web/HTTP/negoziazione-del-contenuto": { - "modified": "2020-11-30T09:20:26.423Z", - "contributors": [ - "endlessDoomsayer", - "sharq" - ] - }, "Web/JavaScript": { "modified": "2020-03-12T19:36:53.666Z", "contributors": [ @@ -4458,25 +3354,6 @@ "DaViD83" ] }, - "Web/JavaScript/Chiusure": { - "modified": "2020-07-09T10:58:36.507Z", - "contributors": [ - "ImChrono", - "massimilianoaprea7", - "EmGargano", - "nicrizzo", - "AndreaP", - "Linko", - "masrossi", - "mar-mo" - ] - }, - "Web/JavaScript/Cosè_JavaScript": { - "modified": "2020-03-12T19:42:53.580Z", - "contributors": [ - "SpaceMudge" - ] - }, "Web/JavaScript/Data_structures": { "modified": "2020-05-27T14:48:54.824Z", "contributors": [ @@ -4492,144 +3369,33 @@ "finvernizzi" ] }, - "Web/JavaScript/Gestione_della_Memoria": { - "modified": "2020-03-12T19:40:57.516Z", - "contributors": [ - "darknightva", - "jspkay", - "sokos", - "guspatagonico" - ] - }, - "Web/JavaScript/Getting_Started": { - "modified": "2019-03-23T23:05:35.907Z", + "Web/JavaScript/Inheritance_and_the_prototype_chain": { + "modified": "2020-03-12T19:40:53.603Z", "contributors": [ - "clamar59" + "novembre", + "spreynprey", + "mean2me", + "davide-perez", + "liuzzom", + "JacopoBont", + "koso00", + "xbeat", + "aur3l10", + "kdex", + "claudiod", + "claudio.mantuano" ] }, - "Web/JavaScript/Guida": { - "modified": "2020-03-12T19:38:40.547Z", + "Web/JavaScript/Reference": { + "modified": "2020-03-12T19:38:44.699Z", "contributors": [ - "Mystral", - "fscholz", "teoli", - "natebunnyfield" + "nicolo-ribaudo", + "raztus" ] }, - "Web/JavaScript/Guida/Controllo_del_flusso_e_gestione_degli_errori": { - "modified": "2020-07-03T09:14:04.292Z", - "contributors": [ - "lucamonte", - "ladysilvia", - "Goliath86", - "catBlack" - ] - }, - "Web/JavaScript/Guida/Dettagli_Object_Model": { - "modified": "2020-03-12T19:45:00.589Z", - "contributors": [ - "wbamberg", - "dem-s" - ] - }, - "Web/JavaScript/Guida/Espressioni_Regolari": { - "modified": "2020-03-12T19:44:32.587Z", - "contributors": [ - "Mystral", - "pfoletto", - "camilgun", - "adrisimo74", - "Samplasion", - "mar-mo" - ] - }, - "Web/JavaScript/Guida/Functions": { - "modified": "2020-03-12T19:43:03.997Z", - "contributors": [ - "MikePap", - "lvzndr" - ] - }, - "Web/JavaScript/Guida/Grammar_and_types": { - "modified": "2020-03-12T19:43:14.274Z", - "contributors": [ - "AliceM5", - "mme000", - "Goliath86", - "JsD3n", - "catBlack", - "edoardopa" - ] - }, - "Web/JavaScript/Guida/Introduzione": { - "modified": "2020-03-12T19:42:19.516Z", - "contributors": [ - "edoardopa", - "claudiod" - ] - }, - "Web/JavaScript/Guida/Iteratori_e_generatori": { - "modified": "2020-03-12T19:46:49.658Z", - "contributors": [ - "jackdbd" - ] - }, - "Web/JavaScript/Guida/Loops_and_iteration": { - "modified": "2020-10-11T06:08:37.488Z", - "contributors": [ - "bombur51", - "Edo", - "koalacurioso", - "ladysilvia", - "massimiliamanto", - "Cereal84" - ] - }, - "Web/JavaScript/Il_DOM_e_JavaScript": { - "modified": "2019-12-13T21:06:11.041Z", - "contributors": [ - "wbamberg", - "teoli", - "DaViD83" - ] - }, - "Web/JavaScript/Inheritance_and_the_prototype_chain": { - "modified": "2020-03-12T19:40:53.603Z", - "contributors": [ - "novembre", - "spreynprey", - "mean2me", - "davide-perez", - "liuzzom", - "JacopoBont", - "koso00", - "xbeat", - "aur3l10", - "kdex", - "claudiod", - "claudio.mantuano" - ] - }, - "Web/JavaScript/Introduzione_al_carattere_Object-Oriented_di_JavaScript": { - "modified": "2020-03-12T19:36:12.785Z", - "contributors": [ - "wbamberg", - "gabriellaborghi", - "giovanniragno", - "teoli", - "fusionchess" - ] - }, - "Web/JavaScript/Reference": { - "modified": "2020-03-12T19:38:44.699Z", - "contributors": [ - "teoli", - "nicolo-ribaudo", - "raztus" - ] - }, - "Web/JavaScript/Reference/Classes": { - "modified": "2020-10-15T21:38:26.392Z", + "Web/JavaScript/Reference/Classes": { + "modified": "2020-10-15T21:38:26.392Z", "contributors": [ "fscholz", "MaxArt", @@ -4644,14 +3410,6 @@ "Sheppy" ] }, - "Web/JavaScript/Reference/Classes/costruttore": { - "modified": "2020-03-12T19:44:11.878Z", - "contributors": [ - "webpn", - "alexandr-sizemov", - "Cereal84" - ] - }, "Web/JavaScript/Reference/Classes/extends": { "modified": "2020-03-12T19:45:50.905Z", "contributors": [ @@ -4718,42 +3476,6 @@ "MPinna" ] }, - "Web/JavaScript/Reference/Functions_and_function_scope": { - "modified": "2020-03-12T19:39:12.043Z", - "contributors": [ - "lvzndr", - "ungarida", - "teoli", - "Salvo1402" - ] - }, - "Web/JavaScript/Reference/Functions_and_function_scope/Arrow_functions": { - "modified": "2020-03-12T19:45:00.553Z", - "contributors": [ - "nickdastain", - "DrJest" - ] - }, - "Web/JavaScript/Reference/Functions_and_function_scope/arguments": { - "modified": "2020-10-15T22:02:48.792Z", - "contributors": [ - "lesar", - "adrisimo74" - ] - }, - "Web/JavaScript/Reference/Functions_and_function_scope/get": { - "modified": "2020-10-15T22:01:12.442Z", - "contributors": [ - "matteogatti" - ] - }, - "Web/JavaScript/Reference/Functions_and_function_scope/set": { - "modified": "2020-07-11T16:38:00.325Z", - "contributors": [ - "CostyEffe", - "DeadManPoe" - ] - }, "Web/JavaScript/Reference/Global_Objects": { "modified": "2020-03-12T19:39:20.143Z", "contributors": [ @@ -4947,12 +3669,6 @@ "vidoz" ] }, - "Web/JavaScript/Reference/Global_Objects/Array/prototype": { - "modified": "2019-03-23T22:43:29.228Z", - "contributors": [ - "zauli83" - ] - }, "Web/JavaScript/Reference/Global_Objects/Array/push": { "modified": "2020-10-15T21:57:19.586Z", "contributors": [ @@ -5423,17 +4139,6 @@ "nicelbole" ] }, - "Web/JavaScript/Reference/Global_Objects/Object/prototype": { - "modified": "2019-03-23T22:58:00.342Z", - "contributors": [ - "gamerboy", - "fantarama", - "tommyblue", - "roccomuso", - "vindega", - "nicolo-ribaudo" - ] - }, "Web/JavaScript/Reference/Global_Objects/Object/seal": { "modified": "2020-10-15T22:07:44.226Z", "contributors": [ @@ -5491,24 +4196,6 @@ "federicoviceconti" ] }, - "Web/JavaScript/Reference/Global_Objects/Proxy/handler": { - "modified": "2020-10-15T22:07:04.638Z", - "contributors": [ - "fscholz" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Proxy/handler/apply": { - "modified": "2020-10-15T22:07:00.348Z", - "contributors": [ - "shb" - ] - }, - "Web/JavaScript/Reference/Global_Objects/Proxy/revocabile": { - "modified": "2020-10-15T22:10:51.734Z", - "contributors": [ - "jfet97" - ] - }, "Web/JavaScript/Reference/Global_Objects/Set": { "modified": "2019-03-23T22:31:04.521Z", "contributors": [ @@ -5567,12 +4254,6 @@ "ladysilvia" ] }, - "Web/JavaScript/Reference/Global_Objects/String/prototype": { - "modified": "2020-10-15T22:08:09.616Z", - "contributors": [ - "ladysilvia" - ] - }, "Web/JavaScript/Reference/Global_Objects/String/raw": { "modified": "2020-10-15T22:08:05.242Z", "contributors": [ @@ -5691,30 +4372,6 @@ "Giuseppe37" ] }, - "Web/JavaScript/Reference/Operators/Operator_Condizionale": { - "modified": "2019-03-18T21:30:29.773Z", - "contributors": [ - "lesar" - ] - }, - "Web/JavaScript/Reference/Operators/Operatore_virgola": { - "modified": "2020-10-15T22:23:54.628Z", - "contributors": [ - "ca42rico" - ] - }, - "Web/JavaScript/Reference/Operators/Operatori_Aritmetici": { - "modified": "2020-10-15T21:38:22.596Z", - "contributors": [ - "chrisdavidmills", - "fscholz", - "wbamberg", - "ladysilvia", - "lazycesar", - "kdex", - "alberto.decaro" - ] - }, "Web/JavaScript/Reference/Operators/Spread_syntax": { "modified": "2020-10-15T22:03:10.047Z", "contributors": [ @@ -5851,41 +4508,12 @@ "IkobaNoOkami" ] }, - "Web/JavaScript/Reference/template_strings": { - "modified": "2020-03-12T19:43:06.757Z", - "contributors": [ - "zedrix", - "sharq", - "manuel-di-iorio" - ] - }, - "Web/JavaScript/Una_reintroduzione_al_JavaScript": { - "modified": "2020-10-03T10:20:38.079Z", - "contributors": [ - "matt.polvenz", - "tangredifrancesco", - "igor.bragato", - "microjumper", - "maboglia", - "e403-mdn", - "clamar59", - "teoli", - "ethertank", - "Nicola_D" - ] - }, "Web/Performance": { "modified": "2019-08-09T16:36:45.228Z", "contributors": [ "estelle" ] }, - "Web/Performance/Percorso_critico_di_rendering": { - "modified": "2019-10-26T07:16:57.508Z", - "contributors": [ - "theborgh" - ] - }, "Web/Reference": { "modified": "2019-03-23T23:17:01.442Z", "contributors": [ @@ -5917,12 +4545,6 @@ "Sheppy" ] }, - "Web/Security/Password_insicure": { - "modified": "2019-03-18T21:40:50.724Z", - "contributors": [ - "oprof" - ] - }, "Web/Tutorials": { "modified": "2019-03-23T22:46:08.934Z", "contributors": [ @@ -5937,12 +4559,6 @@ "theborgh" ] }, - "Web/Web_Components/Usare_custom_elements": { - "modified": "2020-03-31T06:51:28.687Z", - "contributors": [ - "massimiliano.mantovani" - ] - }, "Web/XSLT": { "modified": "2019-01-16T16:09:31.557Z", "contributors": [ @@ -5952,34 +4568,1142 @@ "Federico" ] }, - "WebSockets": { - "modified": "2019-03-23T23:27:06.479Z", + "Mozilla/Firefox/Releases/1.5/Adapting_XUL_Applications_for_Firefox_1.5": { + "modified": "2019-03-23T23:41:34.028Z", "contributors": [ - "AlessandroSanino1994", - "br4in", - "music-wedding", - "pbrenna" + "wbamberg", + "Indigo" ] }, - "WebSockets/Writing_WebSocket_client_applications": { - "modified": "2019-03-23T22:14:26.473Z", + "Web/Guide/Parsing_and_serializing_XML": { + "modified": "2019-03-24T00:13:01.603Z", "contributors": [ - "mnemosdev" + "fscholz", + "foto-planner", + "fusionchess" ] }, - "Web_Development/Mobile": { - "modified": "2019-03-23T23:24:04.119Z", + "Glossary/DHTML": { + "modified": "2019-03-24T00:02:50.459Z", "contributors": [ - "BenB" + "teoli", + "fscholz", + "Samuele" ] }, - "Web_Development/Mobile/Design_sensibile": { - "modified": "2019-03-23T23:24:00.771Z", + "orphaned/Tools/Add-ons/DOM_Inspector": { + "modified": "2020-07-16T22:36:24.345Z", "contributors": [ - "SlagNe" - ] - }, - "XHTML": { + "Federico", + "Leofiore", + "Samuele" + ] + }, + "Mozilla/Firefox/Releases/1.5": { + "modified": "2019-03-23T23:44:26.825Z", + "contributors": [ + "wbamberg", + "teoli", + "Leofiore", + "Federico" + ] + }, + "Mozilla/Firefox/Releases/18": { + "modified": "2019-03-23T23:34:04.358Z", + "contributors": [ + "wbamberg", + "Indil", + "0limits91" + ] + }, + "Mozilla/Firefox/Releases/2": { + "modified": "2019-03-23T23:44:14.083Z", + "contributors": [ + "wbamberg", + "Leofiore", + "Samuele", + "Federico", + "Neotux" + ] + }, + "Web/HTTP/Headers/User-Agent/Firefox": { + "modified": "2019-03-23T23:44:58.670Z", + "contributors": [ + "fotografi", + "teoli", + "Federico" + ] + }, + "Glossary/Response_header": { + "modified": "2019-03-18T21:31:16.700Z", + "contributors": [ + "lucat92" + ] + }, + "Glossary/Protocol": { + "modified": "2020-04-21T13:55:15.140Z", + "contributors": [ + "sara_t", + "xplosionmind" + ] + }, + "Web/CSS/CSS_Lists_and_Counters/Consistent_list_indentation": { + "modified": "2019-03-23T23:43:02.621Z", + "contributors": [ + "music-wedding", + "artistics-weddings", + "teoli", + "bradipao" + ] + }, + "Web/SVG/Applying_SVG_effects_to_HTML_content": { + "modified": "2019-03-23T23:41:29.996Z", + "contributors": [ + "teoli", + "Federico" + ] + }, + "Web/CSS/CSS_Columns/Using_multi-column_layouts": { + "modified": "2019-03-23T23:43:04.536Z", + "contributors": [ + "bradipao" + ] + }, + "Learn/Accessibility/Mobile": { + "modified": "2020-07-16T22:40:30.564Z", + "contributors": [ + "mipo" + ] + }, + "Learn/Accessibility/Accessibility_troubleshooting": { + "modified": "2020-07-16T22:40:35.761Z", + "contributors": [ + "mipo" + ] + }, + "Learn/Accessibility/What_is_accessibility": { + "modified": "2020-07-16T22:40:04.717Z", + "contributors": [ + "mipo" + ] + }, + "Learn/Accessibility/CSS_and_JavaScript": { + "modified": "2020-07-16T22:40:17.303Z", + "contributors": [ + "mipo" + ] + }, + "Learn/Accessibility/HTML": { + "modified": "2020-07-16T22:40:11.165Z", + "contributors": [ + "mipo" + ] + }, + "Learn/Accessibility": { + "modified": "2020-07-16T22:39:57.773Z", + "contributors": [ + "mipo" + ] + }, + "Learn/Accessibility/Multimedia": { + "modified": "2020-07-16T22:40:26.699Z", + "contributors": [ + "mipo" + ] + }, + "Learn/Accessibility/WAI-ARIA_basics": { + "modified": "2020-07-16T22:40:22.345Z", + "contributors": [ + "mipo" + ] + }, + "orphaned/Learn/How_to_contribute": { + "modified": "2020-07-16T22:33:44.464Z", + "contributors": [ + "SphinxKnight", + "ZiaRita", + "ivan.lori" + ] + }, + "Learn/CSS/Building_blocks/Selectors": { + "modified": "2020-10-27T14:47:40.269Z", + "contributors": [ + "francescomazza91" + ] + }, + "Learn/CSS/Styling_text/Styling_links": { + "modified": "2020-07-16T22:26:19.044Z", + "contributors": [ + "genoa1893" + ] + }, + "Learn/Getting_started_with_the_web/What_will_your_website_look_like": { + "modified": "2020-07-16T22:34:17.256Z", + "contributors": [ + "PyQio" + ] + }, + "Learn/Getting_started_with_the_web/How_the_Web_works": { + "modified": "2020-11-10T20:12:58.028Z", + "contributors": [ + "massic80", + "JennyDC" + ] + }, + "Learn/Getting_started_with_the_web/Dealing_with_files": { + "modified": "2020-07-16T22:34:34.196Z", + "contributors": [ + "ZiaRita", + "PatrickT", + "DaniPani", + "cubark" + ] + }, + "Learn/Getting_started_with_the_web/Publishing_your_website": { + "modified": "2020-07-30T14:39:28.232Z", + "contributors": [ + "sara_t", + "dag7dev" + ] + }, + "Learn/Forms/How_to_build_custom_form_controls": { + "modified": "2020-07-16T22:21:56.435Z", + "contributors": [ + "whiteLie" + ] + }, + "Learn/Forms/Form_validation": { + "modified": "2020-12-03T10:32:19.605Z", + "contributors": [ + "LoSo", + "claudiod" + ] + }, + "Learn/Forms": { + "modified": "2020-10-05T13:36:42.596Z", + "contributors": [ + "ArgusMk", + "Jeffrey_Yang" + ] + }, + "Learn/HTML/Howto/Use_data_attributes": { + "modified": "2020-07-16T22:22:35.395Z", + "contributors": [ + "Elfo404", + "Enrico_Polanski" + ] + }, + "Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals": { + "modified": "2020-07-16T22:23:34.063Z", + "contributors": [ + "b4yl0n", + "duduindo", + "Th3cG", + "robertsillo" + ] + }, + "Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML": { + "modified": "2020-07-16T22:23:20.000Z", + "contributors": [ + "Aedo1", + "howilearn" + ] + }, + "Learn/HTML/Multimedia_and_embedding/Video_and_audio_content": { + "modified": "2020-07-16T22:24:53.308Z", + "contributors": [ + "howilearn" + ] + }, + "Learn/HTML/Multimedia_and_embedding/Responsive_images": { + "modified": "2020-07-16T22:24:35.114Z", + "contributors": [ + "kalamun", + "howilearn" + ] + }, + "Learn/JavaScript/Howto": { + "modified": "2020-07-16T22:33:09.378Z", + "contributors": [ + "mario.dilodovico1" + ] + }, + "Learn/JavaScript/First_steps/What_went_wrong": { + "modified": "2020-07-16T22:30:33.953Z", + "contributors": [ + "rosso791" + ] + }, + "Learn/JavaScript/First_steps/Variables": { + "modified": "2020-08-19T06:27:13.303Z", + "contributors": [ + "a.ros", + "SamuelaKC", + "Ibernato93" + ] + }, + "Learn/JavaScript/Objects/Basics": { + "modified": "2020-07-16T22:31:59.612Z", + "contributors": [ + "dq82elo", + "claudiod" + ] + }, + "Learn/JavaScript/Objects": { + "modified": "2020-07-16T22:31:50.631Z", + "contributors": [ + "maboglia", + "s3lvatico" + ] + }, + "Learn/JavaScript/Objects/JSON": { + "modified": "2020-07-16T22:32:26.492Z", + "contributors": [ + "mario.dilodovico1" + ] + }, + "Learn/Server-side/Django/Introduction": { + "modified": "2020-10-29T07:11:12.599Z", + "contributors": [ + "sara_t", + "dag7dev", + "gianluca.gioino", + "CristinaS24" + ] + }, + "Web/HTTP/Link_prefetching_FAQ": { + "modified": "2019-03-23T23:44:25.588Z", + "contributors": [ + "fscholz", + "artistics-weddings", + "jigs12", + "Leofiore" + ] + }, + "Glossary/Localization": { + "modified": "2019-03-23T23:44:27.139Z", + "contributors": [ + "teoli", + "Verruckt", + "Leofiore", + "Etms", + "Federico" + ] + }, + "MDN/At_ten": { + "modified": "2019-03-23T22:42:30.395Z", + "contributors": [ + "foto-planner", + "Vinsala", + "Redsnic", + "Lorenzo_FF" + ] + }, + "orphaned/MDN/Community": { + "modified": "2019-03-23T22:36:02.220Z", + "contributors": [ + "Italuil", + "wbamberg", + "Vinsala" + ] + }, + "MDN/Contribute/Howto/Create_and_edit_pages": { + "modified": "2019-03-23T23:06:13.182Z", + "contributors": [ + "wbamberg", + "fabriziobianchi3", + "claudio.mantuano", + "Sav_" + ] + }, + "orphaned/MDN/Contribute/Howto/Create_an_MDN_account": { + "modified": "2019-01-16T19:06:05.374Z", + "contributors": [ + "ladysilvia", + "wbamberg", + "plovec", + "klez" + ] + }, + "orphaned/MDN/Contribute/Howto/Delete_my_profile": { + "modified": "2020-10-21T23:15:42.235Z", + "contributors": [ + "FrancescoCoding" + ] + }, + "orphaned/MDN/Contribute/Howto/Do_a_technical_review": { + "modified": "2019-01-16T19:16:55.097Z", + "contributors": [ + "wbamberg", + "klez" + ] + }, + "orphaned/MDN/Contribute/Howto/Do_an_editorial_review": { + "modified": "2019-03-23T23:10:59.000Z", + "contributors": [ + "wbamberg", + "mat.campanelli", + "Navy60" + ] + }, + "orphaned/MDN/Contribute/Howto/Set_the_summary_for_a_page": { + "modified": "2019-03-23T23:07:02.988Z", + "contributors": [ + "wbamberg", + "Enrico12" + ] + }, + "orphaned/MDN/Editor": { + "modified": "2020-09-30T15:41:34.289Z", + "contributors": [ + "chrisdavidmills", + "wbamberg", + "klez", + "turco" + ] + }, + "MDN/Structures/Macros": { + "modified": "2020-09-30T15:30:11.714Z", + "contributors": [ + "chrisdavidmills", + "wbamberg", + "frbi" + ] + }, + "MDN/Guidelines/Conventions_definitions": { + "modified": "2020-09-30T15:30:11.829Z", + "contributors": [ + "chrisdavidmills", + "wbamberg", + "Giacomo_" + ] + }, + "MDN/Structures/Compatibility_tables": { + "modified": "2020-10-15T22:03:08.289Z", + "contributors": [ + "chrisdavidmills", + "wbamberg", + "PsCustomObject", + "Carlo-Effe" + ] + }, + "Mozilla/Add-ons/WebExtensions/What_are_WebExtensions": { + "modified": "2019-03-18T21:03:03.594Z", + "contributors": [ + "chack1172" + ] + }, + "Mozilla/Add-ons/WebExtensions/Your_first_WebExtension": { + "modified": "2019-03-18T21:03:00.548Z", + "contributors": [ + "chack1172" + ] + }, + "Mozilla/Add-ons/WebExtensions/Content_scripts": { + "modified": "2019-06-07T12:34:39.378Z", + "contributors": [ + "MarcoAGreco" + ] + }, + "Mozilla/Firefox/Experimental_features": { + "modified": "2020-07-01T10:55:50.190Z", + "contributors": [ + "Karm46" + ] + }, + "Web/API/Plugin": { + "modified": "2019-03-23T23:42:05.451Z", + "contributors": [ + "teoli", + "Samuele", + "Gialloporpora" + ] + }, + "Web/SVG": { + "modified": "2019-03-23T23:44:24.568Z", + "contributors": [ + "sangio90", + "teoli", + "janvas", + "Grino", + "ethertank", + "Verruckt", + "DaViD83", + "Federico" + ] + }, + "orphaned/Tools/Add-ons": { + "modified": "2020-07-16T22:36:23.403Z", + "contributors": [ + "mfluehr" + ] + }, + "Tools/Performance": { + "modified": "2020-07-16T22:36:12.757Z", + "contributors": [ + "Jackerbil" + ] + }, + "Tools/Responsive_Design_Mode": { + "modified": "2020-07-16T22:35:21.469Z", + "contributors": [ + "tassoman" + ] + }, + "Web/API/Canvas_API/Tutorial": { + "modified": "2019-03-23T23:52:28.960Z", + "contributors": [ + "Romanzo", + "fotografi", + "Arset", + "teoli", + "Mmarco", + "Indigo", + "Fuma 90" + ] + }, + "Web/API/Document_Object_Model/Introduction": { + "modified": "2020-02-23T14:30:00.735Z", + "contributors": [ + "giacomomaccanti" + ] + }, + "Web/API/EventTarget/addEventListener": { + "modified": "2020-10-15T21:07:44.354Z", + "contributors": [ + "IsibisiDev", + "akmur", + "gitact", + "vindega", + "teoli", + "khalid32", + "loris94", + "Samuele", + "DaViD83" + ] + }, + "Web/API/Node/childNodes": { + "modified": "2020-10-15T21:18:25.382Z", + "contributors": [ + "IsibisiDev", + "stefanoio", + "render93", + "teoli", + "AshfaqHossain", + "DaViD83" + ] + }, + "Web/API/Node/firstChild": { + "modified": "2020-10-15T21:18:24.892Z", + "contributors": [ + "IsibisiDev", + "wbamberg", + "render93", + "teoli", + "khalid32", + "Sheppy", + "DaViD83" + ] + }, + "Web/API/Node/nodeName": { + "modified": "2020-10-15T21:17:56.733Z", + "contributors": [ + "IsibisiDev", + "teoli", + "jsx", + "AshfaqHossain", + "Federico" + ] + }, + "Web/API/Node/nodeType": { + "modified": "2020-10-15T21:17:56.649Z", + "contributors": [ + "IsibisiDev", + "DavideCanton", + "teoli", + "khalid32", + "ethertank", + "Federico" + ] + }, + "Web/API/Node/nodeValue": { + "modified": "2019-03-24T00:13:06.084Z", + "contributors": [ + "teoli", + "jsx", + "dextra", + "Federico" + ] + }, + "Web/API/Node/parentNode": { + "modified": "2020-10-15T21:17:57.762Z", + "contributors": [ + "IsibisiDev", + "teoli", + "jsx", + "Federico" + ] + }, + "Web/API/Node/prefix": { + "modified": "2019-03-23T23:47:01.925Z", + "contributors": [ + "teoli", + "jsx", + "Federico" + ] + }, + "Web/API/Node/textContent": { + "modified": "2020-10-15T21:17:56.553Z", + "contributors": [ + "LoSo", + "IsibisiDev", + "teoli", + "khalid32", + "Federico" + ] + }, + "Web/API/KeyboardEvent/charCode": { + "modified": "2019-03-23T23:46:31.812Z", + "contributors": [ + "teoli", + "khalid32", + "Federico" + ] + }, + "Web/API/UIEvent/isChar": { + "modified": "2019-03-23T23:46:41.517Z", + "contributors": [ + "teoli", + "xuancanh", + "Federico" + ] + }, + "Web/API/UIEvent/layerX": { + "modified": "2019-03-23T23:46:44.079Z", + "contributors": [ + "teoli", + "jsx", + "Federico" + ] + }, + "Web/API/UIEvent/layerY": { + "modified": "2019-03-23T23:46:42.670Z", + "contributors": [ + "teoli", + "khalid32", + "Federico" + ] + }, + "Web/API/UIEvent/pageX": { + "modified": "2019-03-23T23:46:41.625Z", + "contributors": [ + "teoli", + "jsx", + "Federico" + ] + }, + "Web/API/UIEvent/pageY": { + "modified": "2019-03-23T23:46:46.107Z", + "contributors": [ + "teoli", + "jsx", + "Federico" + ] + }, + "Web/API/UIEvent/view": { + "modified": "2019-03-23T23:46:31.176Z", + "contributors": [ + "teoli", + "khalid32", + "Federico" + ] + }, + "Web/API/KeyboardEvent/which": { + "modified": "2019-03-23T23:46:32.154Z", + "contributors": [ + "teoli", + "jsx", + "Federico" + ] + }, + "Web/API/Geolocation_API": { + "modified": "2019-03-18T21:46:47.006Z", + "contributors": [ + "robertopinotti" + ] + }, + "Web/API/Notification/dir": { + "modified": "2020-10-15T22:17:29.488Z", + "contributors": [ + "Belingheri" + ] + }, + "Web/API/Notification": { + "modified": "2019-03-18T20:57:39.827Z", + "contributors": [ + "francymin", + "Mascare" + ] + }, + "Web/API/HTMLHyperlinkElementUtils": { + "modified": "2019-03-23T23:01:38.757Z", + "contributors": [ + "teoli" + ] + }, + "Web/API/WindowOrWorkerGlobalScope/clearInterval": { + "modified": "2019-03-23T22:33:02.364Z", + "contributors": [ + "lorenzopieri" + ] + }, + "Web/API/XMLHttpRequest/Using_XMLHttpRequest": { + "modified": "2019-09-22T07:49:44.300Z", + "contributors": [ + "chkrr00k", + "valerio-bozzolan", + "teoli", + "Andrea_Barghigiani" + ] + }, + "Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property": { + "modified": "2019-03-23T23:43:56.513Z", + "contributors": [ + "teoli", + "Leofiore" + ] + }, + "Web/CSS/Reference": { + "modified": "2020-04-22T10:36:23.257Z", + "contributors": [ + "xplosionmind", + "Pardoz", + "teoli", + "tregagnon", + "Federico" + ] + }, + "Web/CSS/Layout_cookbook": { + "modified": "2019-03-18T21:23:52.893Z", + "contributors": [ + "Yoekkul" + ] + }, + "Web/CSS/Child_combinator": { + "modified": "2019-03-23T22:33:41.612Z", + "contributors": [ + "ExplosiveLab" + ] + }, + "Web/Demos_of_open_web_technologies": { + "modified": "2019-03-23T22:06:33.966Z", + "contributors": [ + "siron94" + ] + }, + "Web/API/Window/DOMContentLoaded_event": { + "modified": "2020-10-15T22:04:24.853Z", + "contributors": [ + "IsibisiDev", + "wbamberg", + "bolste" + ] + }, + "Web/API/Window/load_event": { + "modified": "2019-04-30T14:10:24.678Z", + "contributors": [ + "wbamberg", + "IsibisiDev", + "sickDevelopers", + "fscholz", + "lucamemma" + ] + }, + "Web/Guide/AJAX/Getting_Started": { + "modified": "2019-03-23T23:41:32.850Z", + "contributors": [ + "chrisdavidmills", + "Mattia_Zanella", + "Federico" + ] + }, + "Web/Guide/HTML/Content_categories": { + "modified": "2019-03-23T23:34:44.540Z", + "contributors": [ + "Sebastianz", + "Ella", + "nicolo-ribaudo", + "teoli", + "Nicola_D" + ] + }, + "Web/HTML/Attributes": { + "modified": "2019-03-23T23:34:35.010Z", + "contributors": [ + "teoli", + "Nicola_D" + ] + }, + "Web/API/Canvas_API": { + "modified": "2019-09-27T19:03:03.922Z", + "contributors": [ + "NeckersBOX", + "nataz77", + "teoli", + "Grino", + "mck89" + ] + }, + "Web/HTML/Element/figure": { + "modified": "2020-10-15T22:23:23.465Z", + "contributors": [ + "NeckersBOX" + ] + }, + "orphaned/Learn/HTML/Forms/HTML5_updates": { + "modified": "2019-03-23T23:29:43.061Z", + "contributors": [ + "teoli", + "Giona" + ] + }, + "Web/Guide/HTML/HTML5": { + "modified": "2019-03-23T23:35:35.217Z", + "contributors": [ + "artistics-weddings", + "teoli", + "bertuz83", + "Giona", + "Mattei", + "Grino" + ] + }, + "Web/Guide/HTML/HTML5/Introduction_to_HTML5": { + "modified": "2019-03-23T23:29:36.115Z", + "contributors": [ + "teoli", + "bertuz", + "Giona" + ] + }, + "Web/HTML/Reference": { + "modified": "2019-09-09T07:18:46.738Z", + "contributors": [ + "SphinxKnight", + "wbamberg", + "LoSo" + ] + }, + "Web/Guide/HTML/Using_HTML_sections_and_outlines": { + "modified": "2019-03-23T23:29:51.242Z", + "contributors": [ + "teoli", + "Giona" + ] + }, + "Web/HTML/Using_the_application_cache": { + "modified": "2019-03-23T23:28:46.240Z", + "contributors": [ + "Carlo-Effe", + "g4b0", + "teoli", + "pastorello" + ] + }, + "Web/HTTP/Basics_of_HTTP": { + "modified": "2020-11-30T09:32:11.577Z", + "contributors": [ + "MatteoZxy", + "giuseppe.librandi02" + ] + }, + "Web/HTTP/Compression": { + "modified": "2020-11-30T09:31:19.301Z", + "contributors": [ + "davide.martinelli13", + "lucathetiger96.96", + "SphinxKnight" + ] + }, + "Web/HTTP/Content_negotiation": { + "modified": "2020-11-30T09:20:26.423Z", + "contributors": [ + "endlessDoomsayer", + "sharq" + ] + }, + "Web/HTTP/Overview": { + "modified": "2020-11-08T15:52:52.082Z", + "contributors": [ + "meogrande", + "abatti" + ] + }, + "Web/HTTP/Range_requests": { + "modified": "2019-08-03T05:17:24.435Z", + "contributors": [ + "theborgh" + ] + }, + "Web/HTTP/Session": { + "modified": "2020-11-29T21:39:50.877Z", + "contributors": [ + "zambonmichelethanu" + ] + }, + "Web/JavaScript/Closures": { + "modified": "2020-07-09T10:58:36.507Z", + "contributors": [ + "ImChrono", + "massimilianoaprea7", + "EmGargano", + "nicrizzo", + "AndreaP", + "Linko", + "masrossi", + "mar-mo" + ] + }, + "Web/JavaScript/About_JavaScript": { + "modified": "2020-03-12T19:42:53.580Z", + "contributors": [ + "SpaceMudge" + ] + }, + "Web/JavaScript/Memory_Management": { + "modified": "2020-03-12T19:40:57.516Z", + "contributors": [ + "darknightva", + "jspkay", + "sokos", + "guspatagonico" + ] + }, + "Web/JavaScript/Guide/Control_flow_and_error_handling": { + "modified": "2020-07-03T09:14:04.292Z", + "contributors": [ + "lucamonte", + "ladysilvia", + "Goliath86", + "catBlack" + ] + }, + "Web/JavaScript/Guide/Details_of_the_Object_Model": { + "modified": "2020-03-12T19:45:00.589Z", + "contributors": [ + "wbamberg", + "dem-s" + ] + }, + "Web/JavaScript/Guide/Regular_Expressions": { + "modified": "2020-03-12T19:44:32.587Z", + "contributors": [ + "Mystral", + "pfoletto", + "camilgun", + "adrisimo74", + "Samplasion", + "mar-mo" + ] + }, + "Web/JavaScript/Guide/Functions": { + "modified": "2020-03-12T19:43:03.997Z", + "contributors": [ + "MikePap", + "lvzndr" + ] + }, + "Web/JavaScript/Guide/Grammar_and_types": { + "modified": "2020-03-12T19:43:14.274Z", + "contributors": [ + "AliceM5", + "mme000", + "Goliath86", + "JsD3n", + "catBlack", + "edoardopa" + ] + }, + "Web/JavaScript/Guide": { + "modified": "2020-03-12T19:38:40.547Z", + "contributors": [ + "Mystral", + "fscholz", + "teoli", + "natebunnyfield" + ] + }, + "Web/JavaScript/Guide/Introduction": { + "modified": "2020-03-12T19:42:19.516Z", + "contributors": [ + "edoardopa", + "claudiod" + ] + }, + "Web/JavaScript/Guide/Iterators_and_Generators": { + "modified": "2020-03-12T19:46:49.658Z", + "contributors": [ + "jackdbd" + ] + }, + "Web/JavaScript/Guide/Loops_and_iteration": { + "modified": "2020-10-11T06:08:37.488Z", + "contributors": [ + "bombur51", + "Edo", + "koalacurioso", + "ladysilvia", + "massimiliamanto", + "Cereal84" + ] + }, + "Web/JavaScript/JavaScript_technologies_overview": { + "modified": "2019-12-13T21:06:11.041Z", + "contributors": [ + "wbamberg", + "teoli", + "DaViD83" + ] + }, + "Web/JavaScript/Reference/Classes/constructor": { + "modified": "2020-03-12T19:44:11.878Z", + "contributors": [ + "webpn", + "alexandr-sizemov", + "Cereal84" + ] + }, + "Web/JavaScript/Reference/Functions/arguments": { + "modified": "2020-10-15T22:02:48.792Z", + "contributors": [ + "lesar", + "adrisimo74" + ] + }, + "Web/JavaScript/Reference/Functions/Arrow_functions": { + "modified": "2020-03-12T19:45:00.553Z", + "contributors": [ + "nickdastain", + "DrJest" + ] + }, + "Web/JavaScript/Reference/Functions/get": { + "modified": "2020-10-15T22:01:12.442Z", + "contributors": [ + "matteogatti" + ] + }, + "Web/JavaScript/Reference/Functions": { + "modified": "2020-03-12T19:39:12.043Z", + "contributors": [ + "lvzndr", + "ungarida", + "teoli", + "Salvo1402" + ] + }, + "Web/JavaScript/Reference/Functions/set": { + "modified": "2020-07-11T16:38:00.325Z", + "contributors": [ + "CostyEffe", + "DeadManPoe" + ] + }, + "orphaned/Web/JavaScript/Reference/Global_Objects/Array/prototype": { + "modified": "2019-03-23T22:43:29.228Z", + "contributors": [ + "zauli83" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/apply": { + "modified": "2020-10-15T22:07:00.348Z", + "contributors": [ + "shb" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Proxy/revocable": { + "modified": "2020-10-15T22:10:51.734Z", + "contributors": [ + "jfet97" + ] + }, + "Web/JavaScript/Reference/Operators/Conditional_Operator": { + "modified": "2019-03-18T21:30:29.773Z", + "contributors": [ + "lesar" + ] + }, + "Web/JavaScript/Reference/Operators/Comma_Operator": { + "modified": "2020-10-15T22:23:54.628Z", + "contributors": [ + "ca42rico" + ] + }, + "Web/JavaScript/Reference/Template_literals": { + "modified": "2020-03-12T19:43:06.757Z", + "contributors": [ + "zedrix", + "sharq", + "manuel-di-iorio" + ] + }, + "Web/JavaScript/A_re-introduction_to_JavaScript": { + "modified": "2020-10-03T10:20:38.079Z", + "contributors": [ + "matt.polvenz", + "tangredifrancesco", + "igor.bragato", + "microjumper", + "maboglia", + "e403-mdn", + "clamar59", + "teoli", + "ethertank", + "Nicola_D" + ] + }, + "Web/Performance/Critical_rendering_path": { + "modified": "2019-10-26T07:16:57.508Z", + "contributors": [ + "theborgh" + ] + }, + "Web/Security/Insecure_passwords": { + "modified": "2019-03-18T21:40:50.724Z", + "contributors": [ + "oprof" + ] + }, + "Web/Web_Components/Using_custom_elements": { + "modified": "2020-03-31T06:51:28.687Z", + "contributors": [ + "massimiliano.mantovani" + ] + }, + "Web/API/WebSockets_API": { + "modified": "2019-03-23T23:27:06.479Z", + "contributors": [ + "AlessandroSanino1994", + "br4in", + "music-wedding", + "pbrenna" + ] + }, + "Web/API/WebSockets_API/Writing_WebSocket_client_applications": { + "modified": "2019-03-23T22:14:26.473Z", + "contributors": [ + "mnemosdev" + ] + }, + "Web/API/Window/find": { + "modified": "2019-03-24T00:02:59.251Z", + "contributors": [ + "khalid32", + "teoli", + "khela" + ] + }, + "Glossary/XHTML": { "modified": "2019-01-16T16:01:20.965Z", "contributors": [ "Federico", @@ -5987,12 +5711,288 @@ "Indigo" ] }, - "window.find": { - "modified": "2019-03-24T00:02:59.251Z", + "conflicting/Web/API/Document_Object_Model": { + "modified": "2019-03-23T23:40:46.607Z", + "contributors": [ + "teoli", + "DaViD83" + ] + }, + "Learn/CSS/Building_blocks/Cascade_and_inheritance": { + "modified": "2019-03-23T23:44:51.382Z", + "contributors": [ + "Sheppy", + "Andrealibo", + "Verruckt", + "Indigo" + ] + }, + "Learn/CSS/First_steps/How_CSS_works": { + "modified": "2019-03-23T23:43:28.433Z", + "contributors": [ + "pignaccia", + "Grino", + "Verruckt", + "Indigo" + ] + }, + "conflicting/Learn/CSS/First_steps/How_CSS_works": { + "modified": "2019-03-23T23:43:26.112Z", + "contributors": [ + "Verruckt", + "Indigo" + ] + }, + "Learn/CSS/First_steps/How_CSS_is_structured": { + "modified": "2019-03-23T23:43:30.247Z", + "contributors": [ + "Verruckt", + "Indigo" + ] + }, + "conflicting/Learn/CSS/Building_blocks/Selectors": { + "modified": "2019-03-23T23:43:27.992Z", + "contributors": [ + "Verruckt", + "Indigo" + ] + }, + "Learn/CSS/First_steps": { + "modified": "2019-03-23T23:43:26.363Z", + "contributors": [ + "libri-nozze", + "Davidee", + "Grino", + "Verruckt", + "Indigo" + ] + }, + "conflicting/Learn/CSS/First_steps/How_CSS_works_113cfc53c4b8d07b4694368d9b18bd49": { + "modified": "2019-03-23T23:43:33.204Z", + "contributors": [ + "pignaccia", + "Verruckt", + "Indigo" + ] + }, + "conflicting/Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property": { + "modified": "2019-03-23T23:43:11.495Z", + "contributors": [ + "teoli", + "ethertank", + "bradipao" + ] + }, + "Glossary/DOM": { + "modified": "2019-03-24T00:03:02.057Z", + "contributors": [ + "teoli", + "Samuele", + "Grino", + "khela", + "Federico", + "DaViD83" + ] + }, + "Web/OpenSearch": { + "modified": "2019-01-16T16:19:44.703Z", + "contributors": [ + "Federico" + ] + }, + "conflicting/Learn/Getting_started_with_the_web": { + "modified": "2020-07-16T22:22:27.063Z", + "contributors": [ + "duduindo", + "wbamberg", + "Ella" + ] + }, + "conflicting/Learn/Server-side/Django": { + "modified": "2019-03-23T23:07:51.453Z", + "contributors": [ + "foto-planner", + "domcorvasce" + ] + }, + "conflicting/Web/Guide": { + "modified": "2019-03-23T23:44:27.263Z", + "contributors": [ + "Leofiore" + ] + }, + "Web/Progressive_web_apps": { + "modified": "2019-03-23T23:24:00.771Z", + "contributors": [ + "SlagNe" + ] + }, + "Web/Guide/Mobile": { + "modified": "2019-03-23T23:24:04.119Z", + "contributors": [ + "BenB" + ] + }, + "conflicting/Web/Accessibility": { + "modified": "2019-03-23T23:18:40.805Z", + "contributors": [ + "klez" + ] + }, + "conflicting/Web/API/Node/firstChild": { + "modified": "2019-03-23T23:45:06.385Z", + "contributors": [ + "teoli", + "Federico" + ] + }, + "Web/API/Node/namespaceURI": { + "modified": "2019-03-23T23:45:08.038Z", + "contributors": [ + "teoli", + "Federico" + ] + }, + "Web/API/DocumentOrShadowRoot/styleSheets": { + "modified": "2019-03-23T23:46:31.284Z", "contributors": [ + "teoli", "khalid32", + "Federico" + ] + }, + "Web/API/MouseEvent/altKey": { + "modified": "2019-03-23T23:46:44.336Z", + "contributors": [ "teoli", - "khela" + "jsx", + "Federico" + ] + }, + "Web/API/MouseEvent/button": { + "modified": "2019-03-23T23:46:37.711Z", + "contributors": [ + "teoli", + "khalid32", + "Federico" + ] + }, + "Web/API/MouseEvent/ctrlKey": { + "modified": "2019-03-23T23:46:43.027Z", + "contributors": [ + "teoli", + "khalid32", + "Federico" + ] + }, + "Web/API/KeyboardEvent/keyCode": { + "modified": "2019-03-23T23:46:33.218Z", + "contributors": [ + "teoli", + "xuancanh", + "Federico" + ] + }, + "Web/API/MouseEvent/metaKey": { + "modified": "2019-03-23T23:46:45.023Z", + "contributors": [ + "teoli", + "khalid32", + "Federico" + ] + }, + "Web/API/MouseEvent/shiftKey": { + "modified": "2019-03-23T23:46:40.291Z", + "contributors": [ + "teoli", + "jsx", + "Federico" + ] + }, + "conflicting/Web/API/WindowOrWorkerGlobalScope": { + "modified": "2019-03-23T22:33:10.851Z", + "contributors": [ + "aragacalledpat" + ] + }, + "Web/CSS/font-language-override": { + "modified": "2019-03-23T23:28:40.117Z", + "contributors": [ + "teoli", + "lboy" + ] + }, + "Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox": { + "modified": "2019-03-18T20:58:13.071Z", + "contributors": [ + "KadirTopal", + "ATrogolo", + "fscholz", + "Renatvs88" + ] + }, + "conflicting/Learn/CSS": { + "modified": "2019-03-23T23:29:02.257Z", + "contributors": [ + "Sheppy" + ] + }, + "conflicting/Web/API/Canvas_API/Tutorial": { + "modified": "2019-03-23T23:15:33.594Z", + "contributors": [ + "teoli", + "MrNow" + ] + }, + "conflicting/Learn/Getting_started_with_the_web/JavaScript_basics": { + "modified": "2019-03-23T23:05:35.907Z", + "contributors": [ + "clamar59" + ] + }, + "conflicting/Learn/JavaScript/Objects": { + "modified": "2020-03-12T19:36:12.785Z", + "contributors": [ + "wbamberg", + "gabriellaborghi", + "giovanniragno", + "teoli", + "fusionchess" + ] + }, + "conflicting/Web/JavaScript/Reference/Global_Objects/Object": { + "modified": "2019-03-23T22:58:00.342Z", + "contributors": [ + "gamerboy", + "fantarama", + "tommyblue", + "roccomuso", + "vindega", + "nicolo-ribaudo" + ] + }, + "Web/JavaScript/Reference/Global_Objects/Proxy/Proxy": { + "modified": "2020-10-15T22:07:04.638Z", + "contributors": [ + "fscholz" + ] + }, + "conflicting/Web/JavaScript/Reference/Global_Objects/String": { + "modified": "2020-10-15T22:08:09.616Z", + "contributors": [ + "ladysilvia" + ] + }, + "conflicting/Web/JavaScript/Reference/Operators": { + "modified": "2020-10-15T21:38:22.596Z", + "contributors": [ + "chrisdavidmills", + "fscholz", + "wbamberg", + "ladysilvia", + "lazycesar", + "kdex", + "alberto.decaro" ] } } \ No newline at end of file diff --git a/files/it/conflicting/learn/css/building_blocks/selectors/index.html b/files/it/conflicting/learn/css/building_blocks/selectors/index.html index aece606365..5d659fa8fd 100644 --- a/files/it/conflicting/learn/css/building_blocks/selectors/index.html +++ b/files/it/conflicting/learn/css/building_blocks/selectors/index.html @@ -1,10 +1,11 @@ --- title: I Selettori -slug: Conoscere_i_CSS/I_Selettori +slug: conflicting/Learn/CSS/Building_blocks/Selectors tags: - Conoscere_i_CSS translation_of: Learn/CSS/Building_blocks/Selectors translation_of_original: Web/Guide/CSS/Getting_started/Selectors +original_slug: Conoscere_i_CSS/I_Selettori ---

Questa pagina spiega come applicare gli stili in modo selettivo, e come i diversi tipi di selettori abbiano un diverso grado di prevalenza. diff --git a/files/it/conflicting/learn/css/first_steps/how_css_works/index.html b/files/it/conflicting/learn/css/first_steps/how_css_works/index.html index c5565b371f..87f955fffe 100644 --- a/files/it/conflicting/learn/css/first_steps/how_css_works/index.html +++ b/files/it/conflicting/learn/css/first_steps/how_css_works/index.html @@ -1,12 +1,13 @@ --- title: Come funzionano i CSS -slug: Conoscere_i_CSS/Come_funzionano_i_CSS +slug: conflicting/Learn/CSS/First_steps/How_CSS_works tags: - Conoscere_i_CSS - DOM - Tutte_le_categorie translation_of: Learn/CSS/First_steps/How_CSS_works translation_of_original: Web/Guide/CSS/Getting_started/How_CSS_works +original_slug: Conoscere_i_CSS/Come_funzionano_i_CSS ---

Questa pagina spiega il funzionamento dei CSS nel browser. diff --git a/files/it/conflicting/learn/css/first_steps/how_css_works_113cfc53c4b8d07b4694368d9b18bd49/index.html b/files/it/conflicting/learn/css/first_steps/how_css_works_113cfc53c4b8d07b4694368d9b18bd49/index.html index 4048fe74e3..bd894b245b 100644 --- a/files/it/conflicting/learn/css/first_steps/how_css_works_113cfc53c4b8d07b4694368d9b18bd49/index.html +++ b/files/it/conflicting/learn/css/first_steps/how_css_works_113cfc53c4b8d07b4694368d9b18bd49/index.html @@ -1,10 +1,12 @@ --- title: Perché usare i CSS -slug: Conoscere_i_CSS/Perché_usare_i_CSS +slug: >- + conflicting/Learn/CSS/First_steps/How_CSS_works_113cfc53c4b8d07b4694368d9b18bd49 tags: - Conoscere_i_CSS translation_of: Learn/CSS/First_steps/How_CSS_works translation_of_original: Web/Guide/CSS/Getting_started/Why_use_CSS +original_slug: Conoscere_i_CSS/Perché_usare_i_CSS ---

 

diff --git a/files/it/conflicting/learn/css/index.html b/files/it/conflicting/learn/css/index.html index 2bd34295c7..134aff0622 100644 --- a/files/it/conflicting/learn/css/index.html +++ b/files/it/conflicting/learn/css/index.html @@ -1,6 +1,6 @@ --- title: CSS developer guide -slug: Web/Guide/CSS +slug: conflicting/Learn/CSS tags: - CSS - Guide @@ -9,6 +9,7 @@ tags: - TopicStub translation_of: Learn/CSS translation_of_original: Web/Guide/CSS +original_slug: Web/Guide/CSS ---

{{draft}}

Cascading Style Sheets (CSS) is a stylesheet language used to describe the presentation of a document written in HTML or other markup languages such as SVG. CSS describes how the structured elements in the document are to be rendered on screen, on paper, in speech, or on other media. The ability to adjust the document's presentation depending on the output medium is a key feature of CSS.

diff --git a/files/it/conflicting/learn/getting_started_with_the_web/index.html b/files/it/conflicting/learn/getting_started_with_the_web/index.html index c52f7ca3e2..4605a9e4bb 100644 --- a/files/it/conflicting/learn/getting_started_with_the_web/index.html +++ b/files/it/conflicting/learn/getting_started_with_the_web/index.html @@ -1,6 +1,6 @@ --- title: Scrivi una semplice pagina in HTML -slug: Learn/HTML/Scrivi_una_semplice_pagina_in_HTML +slug: conflicting/Learn/Getting_started_with_the_web tags: - Guide - HTML @@ -8,6 +8,7 @@ tags: - Web Development translation_of: Learn/Getting_started_with_the_web translation_of_original: Learn/HTML/Write_a_simple_page_in_HTML +original_slug: Learn/HTML/Scrivi_una_semplice_pagina_in_HTML ---

In questo articolo impareremo come creare una semplice pagina web con il {{Glossary("HTML")}}.

diff --git a/files/it/conflicting/learn/getting_started_with_the_web/javascript_basics/index.html b/files/it/conflicting/learn/getting_started_with_the_web/javascript_basics/index.html index d9c0357ebb..d9b371f22b 100644 --- a/files/it/conflicting/learn/getting_started_with_the_web/javascript_basics/index.html +++ b/files/it/conflicting/learn/getting_started_with_the_web/javascript_basics/index.html @@ -1,8 +1,9 @@ --- title: Getting Started (JavaScript Tutorial) -slug: Web/JavaScript/Getting_Started +slug: conflicting/Learn/Getting_started_with_the_web/JavaScript_basics translation_of: Learn/Getting_started_with_the_web/JavaScript_basics translation_of_original: Web/JavaScript/Getting_Started +original_slug: Web/JavaScript/Getting_Started ---

Perché JavaScript?

JavaScript è un linguaggio per computer potente, complicato, e spesso misconosciuto. Permette lo sviluppo rapido di applicazioni in cui gli utenti possono inserire i dati e vedere i risultati facilmente.

diff --git a/files/it/conflicting/learn/javascript/objects/index.html b/files/it/conflicting/learn/javascript/objects/index.html index 6281d7ef4b..e404d0134d 100644 --- a/files/it/conflicting/learn/javascript/objects/index.html +++ b/files/it/conflicting/learn/javascript/objects/index.html @@ -1,6 +1,6 @@ --- title: Introduzione a JavaScript Object-Oriented -slug: Web/JavaScript/Introduzione_al_carattere_Object-Oriented_di_JavaScript +slug: conflicting/Learn/JavaScript/Objects tags: - Classe - Costruttore @@ -11,6 +11,7 @@ tags: - Orientato agli oggetti translation_of: Learn/JavaScript/Objects translation_of_original: Web/JavaScript/Introduction_to_Object-Oriented_JavaScript +original_slug: Web/JavaScript/Introduzione_al_carattere_Object-Oriented_di_JavaScript ---

{{jsSidebar("Introductory")}}

diff --git a/files/it/conflicting/learn/server-side/django/index.html b/files/it/conflicting/learn/server-side/django/index.html index 071e75d582..e7efb7b504 100644 --- a/files/it/conflicting/learn/server-side/django/index.html +++ b/files/it/conflicting/learn/server-side/django/index.html @@ -1,8 +1,9 @@ --- title: Python -slug: Python +slug: conflicting/Learn/Server-side/Django translation_of: Learn/Server-side/Django translation_of_original: Python +original_slug: Python ---

Python è un linguaggio di programmazione interpretato disponibile su una vasta varietà di piattaforme, inclusi Linux, MacOS X e Microsoft Windows.

diff --git a/files/it/conflicting/web/accessibility/index.html b/files/it/conflicting/web/accessibility/index.html index fccfa1f152..f45cf3b9c4 100644 --- a/files/it/conflicting/web/accessibility/index.html +++ b/files/it/conflicting/web/accessibility/index.html @@ -1,8 +1,9 @@ --- title: Sviluppo Web -slug: Web/Accessibility/Sviluppo_Web +slug: conflicting/Web/Accessibility translation_of: Web/Accessibility translation_of_original: Web/Accessibility/Web_Development +original_slug: Web/Accessibility/Sviluppo_Web ---

 

diff --git a/files/it/conflicting/web/api/canvas_api/tutorial/index.html b/files/it/conflicting/web/api/canvas_api/tutorial/index.html index 1495605ec5..12bd7e78d9 100644 --- a/files/it/conflicting/web/api/canvas_api/tutorial/index.html +++ b/files/it/conflicting/web/api/canvas_api/tutorial/index.html @@ -1,8 +1,9 @@ --- title: Drawing graphics with canvas -slug: Web/HTML/Canvas/Drawing_graphics_with_canvas +slug: conflicting/Web/API/Canvas_API/Tutorial translation_of: Web/API/Canvas_API/Tutorial translation_of_original: Web/API/Canvas_API/Drawing_graphics_with_canvas +original_slug: Web/HTML/Canvas/Drawing_graphics_with_canvas ---

Most of this content (but not the documentation on drawWindow) has been rolled into the more expansive Canvas tutorial, this page should probably be redirected there as it's now redundant but some information may still be relevant.

diff --git a/files/it/conflicting/web/api/document_object_model/index.html b/files/it/conflicting/web/api/document_object_model/index.html index a151cd40c5..0d0bb097aa 100644 --- a/files/it/conflicting/web/api/document_object_model/index.html +++ b/files/it/conflicting/web/api/document_object_model/index.html @@ -1,11 +1,12 @@ --- title: Circa il Document Object Model -slug: Circa_il_Document_Object_Model +slug: conflicting/Web/API/Document_Object_Model tags: - DOM - Tutte_le_categorie translation_of: Web/API/Document_Object_Model translation_of_original: Web/Guide/API/DOM +original_slug: Circa_il_Document_Object_Model ---

Cos'è il DOM?

Il Modello a Oggetti del Documento è una API per i documenti HTML e XML. Esso fornisce una rappresentazione strutturale del documento, dando la possibilità di modificarne il contenuto e la presentazione visiva. In poche parole, connette le pagine web agli script o ai linguaggi di programmazione.

diff --git a/files/it/conflicting/web/api/node/firstchild/index.html b/files/it/conflicting/web/api/node/firstchild/index.html index 99a2a04fc2..a7adb1a1ca 100644 --- a/files/it/conflicting/web/api/node/firstchild/index.html +++ b/files/it/conflicting/web/api/node/firstchild/index.html @@ -1,8 +1,9 @@ --- title: document.firstChild -slug: Web/API/Document/firstChild +slug: conflicting/Web/API/Node/firstChild translation_of: Web/API/Node/firstChild translation_of_original: Web/API/document.firstChild +original_slug: Web/API/Document/firstChild ---
{{APIRef("DOM")}}
diff --git a/files/it/conflicting/web/api/windoworworkerglobalscope/index.html b/files/it/conflicting/web/api/windoworworkerglobalscope/index.html index ce963ed81e..8eaaaa82d9 100644 --- a/files/it/conflicting/web/api/windoworworkerglobalscope/index.html +++ b/files/it/conflicting/web/api/windoworworkerglobalscope/index.html @@ -1,6 +1,6 @@ --- title: WindowTimers -slug: Web/API/WindowTimers +slug: conflicting/Web/API/WindowOrWorkerGlobalScope tags: - API - HTML-DOM @@ -11,6 +11,7 @@ tags: - Workers translation_of: Web/API/WindowOrWorkerGlobalScope translation_of_original: Web/API/WindowTimers +original_slug: Web/API/WindowTimers ---
{{APIRef("HTML DOM")}}
diff --git a/files/it/conflicting/web/css/css_basic_user_interface/using_url_values_for_the_cursor_property/index.html b/files/it/conflicting/web/css/css_basic_user_interface/using_url_values_for_the_cursor_property/index.html index b54d7a7367..5d02181b92 100644 --- a/files/it/conflicting/web/css/css_basic_user_interface/using_url_values_for_the_cursor_property/index.html +++ b/files/it/conflicting/web/css/css_basic_user_interface/using_url_values_for_the_cursor_property/index.html @@ -1,11 +1,13 @@ --- title: Dare una mano al puntatore -slug: Dare_una_mano_al_puntatore +slug: >- + conflicting/Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property tags: - CSS - Tutte_le_categorie translation_of: Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property translation_of_original: Giving_'cursor'_a_Hand +original_slug: Dare_una_mano_al_puntatore ---

Un buon numero di sviluppatori ha chiesto quando Mozilla e Netscape 6+ abbiano pianificato di implementare il supporto per la proprietà cursor. Spesso si stupiscono di scoprire che entrambi i browser già la supportano. Comunque, ciò che non dovrebbe sorprendere è che il supporto è basato sulle specifiche approvate dal W3C per i CSS2.

Il problema di base è questo: Internet Explorer 5.x per Windows riconosce il valore hand, che non appare mai nella sezione 18.1 dei CSS2– ne' in altra specifica. Il valore che più si avvicina al comportamento di hand è pointer, che le specifiche definiscono così: "Il cursore è un puntatore che indica un collegamento". Si noti che non viene mai detto niente riguardo l'apparizione di una manina, anche se è ormai pratica convenzionale dei browser.

diff --git a/files/it/conflicting/web/guide/index.html b/files/it/conflicting/web/guide/index.html index 955b27f5d9..b1d16cf207 100644 --- a/files/it/conflicting/web/guide/index.html +++ b/files/it/conflicting/web/guide/index.html @@ -1,11 +1,12 @@ --- title: Sviluppo Web -slug: Sviluppo_Web +slug: conflicting/Web/Guide tags: - Sviluppo_Web - Tutte_le_categorie translation_of: Web/Guide translation_of_original: Web_Development +original_slug: Sviluppo_Web ---

diff --git a/files/it/conflicting/web/javascript/reference/global_objects/object/index.html b/files/it/conflicting/web/javascript/reference/global_objects/object/index.html index 568165d0be..26386b07ac 100644 --- a/files/it/conflicting/web/javascript/reference/global_objects/object/index.html +++ b/files/it/conflicting/web/javascript/reference/global_objects/object/index.html @@ -1,8 +1,9 @@ --- title: Object.prototype -slug: Web/JavaScript/Reference/Global_Objects/Object/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/Object translation_of: Web/JavaScript/Reference/Global_Objects/Object translation_of_original: Web/JavaScript/Reference/Global_Objects/Object/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Object/prototype ---
{{JSRef("Global_Objects", "Object")}}
diff --git a/files/it/conflicting/web/javascript/reference/global_objects/string/index.html b/files/it/conflicting/web/javascript/reference/global_objects/string/index.html index c83cec2a54..5ba9408faa 100644 --- a/files/it/conflicting/web/javascript/reference/global_objects/string/index.html +++ b/files/it/conflicting/web/javascript/reference/global_objects/string/index.html @@ -1,8 +1,9 @@ --- title: String.prototype -slug: Web/JavaScript/Reference/Global_Objects/String/prototype +slug: conflicting/Web/JavaScript/Reference/Global_Objects/String translation_of: Web/JavaScript/Reference/Global_Objects/String translation_of_original: Web/JavaScript/Reference/Global_Objects/String/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/String/prototype ---
{{JSRef}}
diff --git a/files/it/conflicting/web/javascript/reference/operators/index.html b/files/it/conflicting/web/javascript/reference/operators/index.html index e49fe045ae..abaafab2fd 100644 --- a/files/it/conflicting/web/javascript/reference/operators/index.html +++ b/files/it/conflicting/web/javascript/reference/operators/index.html @@ -1,12 +1,13 @@ --- title: Operatori Aritmetici -slug: Web/JavaScript/Reference/Operators/Operatori_Aritmetici +slug: conflicting/Web/JavaScript/Reference/Operators tags: - JavaScript - Operatori - Operatori Aritmetici translation_of: Web/JavaScript/Reference/Operators translation_of_original: Web/JavaScript/Reference/Operators/Arithmetic_Operators +original_slug: Web/JavaScript/Reference/Operators/Operatori_Aritmetici ---
{{jsSidebar("Operators")}}
diff --git a/files/it/glossary/dhtml/index.html b/files/it/glossary/dhtml/index.html index fbc1dbcbe4..c26ac35927 100644 --- a/files/it/glossary/dhtml/index.html +++ b/files/it/glossary/dhtml/index.html @@ -1,9 +1,10 @@ --- title: DHTML -slug: DHTML +slug: Glossary/DHTML tags: - DHTML translation_of: Glossary/DHTML +original_slug: DHTML ---

 

diff --git a/files/it/glossary/dom/index.html b/files/it/glossary/dom/index.html index 8b6769d83e..9830d03279 100644 --- a/files/it/glossary/dom/index.html +++ b/files/it/glossary/dom/index.html @@ -1,8 +1,9 @@ --- title: DOM -slug: DOM +slug: Glossary/DOM translation_of: Glossary/DOM translation_of_original: Document_Object_Model_(DOM) +original_slug: DOM ---
Utilizzare il DOM Base Livello 1 del W3C
diff --git a/files/it/glossary/localization/index.html b/files/it/glossary/localization/index.html index 678f3670ed..5c56f4551a 100644 --- a/files/it/glossary/localization/index.html +++ b/files/it/glossary/localization/index.html @@ -1,10 +1,11 @@ --- title: Localization -slug: Localization +slug: Glossary/Localization tags: - Da_unire - Tutte_le_categorie translation_of: Glossary/Localization +original_slug: Localization ---

La localizzazione è il processo di traduzione delle interfacce utente di un software da un linguaggio a un altro adattandolo anche a una cultura straniera. Queste risorse servono ad aiutare la localizzazione delle applicazioni e delle estensioni basate su Mozilla.

{{ languages( { "es": "es/Localizaci\u00f3n", "fr": "fr/Localisation", "ja": "ja/Localization", "pl": "pl/Lokalizacja", "pt": "pt/Localiza\u00e7\u00e3o" } ) }}

diff --git a/files/it/glossary/protocol/index.html b/files/it/glossary/protocol/index.html index d764b42322..c682481200 100644 --- a/files/it/glossary/protocol/index.html +++ b/files/it/glossary/protocol/index.html @@ -1,11 +1,12 @@ --- title: protocollo -slug: Glossary/Protocollo +slug: Glossary/Protocol tags: - Glossário - Infrastruttura - Protocolli translation_of: Glossary/Protocol +original_slug: Glossary/Protocollo ---

Un protocollo è un sistema di regole che stabilisce come vengono scambiati i dati fra computer diversi o all’interno dello stesso computer. Per comunicare tra loro, i dispositivi devono scambiarsi i dati in un formato comune. L’insieme delle regole che definisce un formato si chiama protocollo.

diff --git a/files/it/glossary/response_header/index.html b/files/it/glossary/response_header/index.html index 6363a8b84a..ea0ff313fe 100644 --- a/files/it/glossary/response_header/index.html +++ b/files/it/glossary/response_header/index.html @@ -1,9 +1,10 @@ --- title: Header di risposta -slug: Glossary/Header_di_risposta +slug: Glossary/Response_header tags: - Glossário translation_of: Glossary/Response_header +original_slug: Glossary/Header_di_risposta ---

Un header di risposta è un {{glossary("header", "HTTP header")}} che può essere utilizzato in una risposta HTTP e che non fa riferimento al contenuto del messaggio. Gli header di risposta, come {{HTTPHeader("Age")}}, {{HTTPHeader("Location")}} o {{HTTPHeader("Server")}} sono usati per fornire un contesto della risposta più dettagliato.

diff --git a/files/it/glossary/xhtml/index.html b/files/it/glossary/xhtml/index.html index ea600cce7c..55cf71cad6 100644 --- a/files/it/glossary/xhtml/index.html +++ b/files/it/glossary/xhtml/index.html @@ -1,10 +1,11 @@ --- title: XHTML -slug: XHTML +slug: Glossary/XHTML tags: - Tutte_le_categorie - XHTML translation_of: Glossary/XHTML +original_slug: XHTML ---

XHTML sta a XML come HTML sta a SGML. Questo significa che XHTML è un linguaggio a markup simile a HTML, ma con una sintassi più rigida. Le due versioni di XHTML definite dal W3C sono: diff --git a/files/it/learn/accessibility/accessibility_troubleshooting/index.html b/files/it/learn/accessibility/accessibility_troubleshooting/index.html index 8c0e97dab4..0721747f72 100644 --- a/files/it/learn/accessibility/accessibility_troubleshooting/index.html +++ b/files/it/learn/accessibility/accessibility_troubleshooting/index.html @@ -1,6 +1,6 @@ --- title: 'Test di valutazione: risoluzione di problemi di accessibilità' -slug: Learn/Accessibilità/Accessibilità_test_risoluzione_problemi +slug: Learn/Accessibility/Accessibility_troubleshooting tags: - Accessibilità - CSS @@ -10,6 +10,7 @@ tags: - Test di valutazione - WAI-ARIA translation_of: Learn/Accessibility/Accessibility_troubleshooting +original_slug: Learn/Accessibilità/Accessibilità_test_risoluzione_problemi ---

{{LearnSidebar}}
diff --git a/files/it/learn/accessibility/css_and_javascript/index.html b/files/it/learn/accessibility/css_and_javascript/index.html index 6f5e69fea4..b1677cac9f 100644 --- a/files/it/learn/accessibility/css_and_javascript/index.html +++ b/files/it/learn/accessibility/css_and_javascript/index.html @@ -1,6 +1,6 @@ --- title: Linee guida di accessibilità per CSS e JavaScript -slug: Learn/Accessibilità/CSS_e_JavaScript_accessibilità +slug: Learn/Accessibility/CSS_and_JavaScript tags: - Accessibilità - Articolo @@ -13,6 +13,7 @@ tags: - nascondere - non intrusivo translation_of: Learn/Accessibility/CSS_and_JavaScript +original_slug: Learn/Accessibilità/CSS_e_JavaScript_accessibilità ---
{{LearnSidebar}}
diff --git a/files/it/learn/accessibility/html/index.html b/files/it/learn/accessibility/html/index.html index 26129068e4..45d39505ef 100644 --- a/files/it/learn/accessibility/html/index.html +++ b/files/it/learn/accessibility/html/index.html @@ -1,6 +1,6 @@ --- title: 'HTML: una buona base per l''accessibilità' -slug: Learn/Accessibilità/HTML_accessibilità +slug: Learn/Accessibility/HTML tags: - Accessibilità - Articolo @@ -15,6 +15,7 @@ tags: - tastiera - tecnologie assistive translation_of: Learn/Accessibility/HTML +original_slug: Learn/Accessibilità/HTML_accessibilità ---
{{LearnSidebar}}
diff --git a/files/it/learn/accessibility/index.html b/files/it/learn/accessibility/index.html index 57dee47809..83765a8317 100644 --- a/files/it/learn/accessibility/index.html +++ b/files/it/learn/accessibility/index.html @@ -1,6 +1,6 @@ --- title: Accessibilità -slug: Learn/Accessibilità +slug: Learn/Accessibility tags: - ARIA - Accessibilità @@ -17,6 +17,7 @@ tags: - Sviluppo Web - imparare translation_of: Learn/Accessibility +original_slug: Learn/Accessibilità ---
{{LearnSidebar}}
diff --git a/files/it/learn/accessibility/mobile/index.html b/files/it/learn/accessibility/mobile/index.html index 46a2b24c4d..923ae82ae1 100644 --- a/files/it/learn/accessibility/mobile/index.html +++ b/files/it/learn/accessibility/mobile/index.html @@ -1,6 +1,6 @@ --- title: Accessibilità per dispositivi mobili -slug: Learn/Accessibilità/Accessibilità_dispositivi_mobili +slug: Learn/Accessibility/Mobile tags: - Accessibilità - Articolo @@ -12,6 +12,7 @@ tags: - screenreader - touch translation_of: Learn/Accessibility/Mobile +original_slug: Learn/Accessibilità/Accessibilità_dispositivi_mobili ---
{{LearnSidebar}}
diff --git a/files/it/learn/accessibility/multimedia/index.html b/files/it/learn/accessibility/multimedia/index.html index f920e59050..fe0f6d872e 100644 --- a/files/it/learn/accessibility/multimedia/index.html +++ b/files/it/learn/accessibility/multimedia/index.html @@ -1,6 +1,6 @@ --- title: Accessibilità multimediale -slug: Learn/Accessibilità/Multimedia +slug: Learn/Accessibility/Multimedia tags: - Accessibilità - Articolo @@ -15,6 +15,7 @@ tags: - Tracce testuali - Video translation_of: Learn/Accessibility/Multimedia +original_slug: Learn/Accessibilità/Multimedia ---
{{LearnSidebar}}
diff --git a/files/it/learn/accessibility/wai-aria_basics/index.html b/files/it/learn/accessibility/wai-aria_basics/index.html index 09891c8a11..05a7ea4b5f 100644 --- a/files/it/learn/accessibility/wai-aria_basics/index.html +++ b/files/it/learn/accessibility/wai-aria_basics/index.html @@ -1,6 +1,6 @@ --- title: Basi della tecnologia WAI-ARIA -slug: Learn/Accessibilità/WAI-ARIA_basics +slug: Learn/Accessibility/WAI-ARIA_basics tags: - ARIA - Accessibilità @@ -12,6 +12,7 @@ tags: - Principiante - WAI-ARIA translation_of: Learn/Accessibility/WAI-ARIA_basics +original_slug: Learn/Accessibilità/WAI-ARIA_basics ---
{{LearnSidebar}}
diff --git a/files/it/learn/accessibility/what_is_accessibility/index.html b/files/it/learn/accessibility/what_is_accessibility/index.html index 52a5c138f8..196c5e256d 100644 --- a/files/it/learn/accessibility/what_is_accessibility/index.html +++ b/files/it/learn/accessibility/what_is_accessibility/index.html @@ -1,6 +1,6 @@ --- title: Cosa è l'accessibilità? -slug: Learn/Accessibilità/Cosa_è_accessibilità +slug: Learn/Accessibility/What_is_accessibility tags: - Accessibilità - Articolo @@ -17,6 +17,7 @@ tags: - tecnologie assistive - utenti translation_of: Learn/Accessibility/What_is_accessibility +original_slug: Learn/Accessibilità/Cosa_è_accessibilità ---
{{LearnSidebar}}
diff --git a/files/it/learn/css/building_blocks/cascade_and_inheritance/index.html b/files/it/learn/css/building_blocks/cascade_and_inheritance/index.html index 66702c1bdd..a2f2a162d1 100644 --- a/files/it/learn/css/building_blocks/cascade_and_inheritance/index.html +++ b/files/it/learn/css/building_blocks/cascade_and_inheritance/index.html @@ -1,10 +1,11 @@ --- title: Cascata ed ereditarietà -slug: Conoscere_i_CSS/Cascata_ed_ereditarietà +slug: Learn/CSS/Building_blocks/Cascade_and_inheritance tags: - Conoscere_i_CSS translation_of: Learn/CSS/Building_blocks/Cascade_and_inheritance translation_of_original: Web/Guide/CSS/Getting_started/Cascading_and_inheritance +original_slug: Conoscere_i_CSS/Cascata_ed_ereditarietà ---

Questa pagina delinea come diversi fogli di stile interagiscano in cascata e come gli elementi ereditino lo stile dai loro elementi genitori. diff --git a/files/it/learn/css/building_blocks/selectors/index.html b/files/it/learn/css/building_blocks/selectors/index.html index cf0f6662cf..06face955c 100644 --- a/files/it/learn/css/building_blocks/selectors/index.html +++ b/files/it/learn/css/building_blocks/selectors/index.html @@ -1,6 +1,6 @@ --- title: selettori CSS -slug: Learn/CSS/Building_blocks/Selettori +slug: Learn/CSS/Building_blocks/Selectors tags: - Attributo - CSS @@ -10,6 +10,7 @@ tags: - Pseudo - Selettori translation_of: Learn/CSS/Building_blocks/Selectors +original_slug: Learn/CSS/Building_blocks/Selettori ---

{{LearnSidebar}}{{PreviousMenuNext("Learn/CSS/Building_blocks/Cascade_and_inheritance", "Learn/CSS/Building_blocks/Selectors/Type_Class_and_ID_Selectors", "Learn/CSS/Building_blocks")}}
diff --git a/files/it/learn/css/first_steps/how_css_is_structured/index.html b/files/it/learn/css/first_steps/how_css_is_structured/index.html index 7942e9a4a9..029e1f36ac 100644 --- a/files/it/learn/css/first_steps/how_css_is_structured/index.html +++ b/files/it/learn/css/first_steps/how_css_is_structured/index.html @@ -1,10 +1,11 @@ --- title: CSS leggibili -slug: Conoscere_i_CSS/CSS_leggibili +slug: Learn/CSS/First_steps/How_CSS_is_structured tags: - Conoscere_i_CSS translation_of: Learn/CSS/Introduction_to_CSS/Syntax#Beyond_syntax_make_CSS_readable translation_of_original: Web/Guide/CSS/Getting_started/Readable_CSS +original_slug: Conoscere_i_CSS/CSS_leggibili ---

In questa pagina si parla dello stile e della grammatica del linguaggio CSS stesso. diff --git a/files/it/learn/css/first_steps/how_css_works/index.html b/files/it/learn/css/first_steps/how_css_works/index.html index 9e65e269af..558c1445a2 100644 --- a/files/it/learn/css/first_steps/how_css_works/index.html +++ b/files/it/learn/css/first_steps/how_css_works/index.html @@ -1,8 +1,9 @@ --- title: Cosa è CSS -slug: Conoscere_i_CSS/Che_cosa_sono_i_CSS +slug: Learn/CSS/First_steps/How_CSS_works translation_of: Learn/CSS/First_steps/How_CSS_works translation_of_original: Web/Guide/CSS/Getting_started/What_is_CSS +original_slug: Conoscere_i_CSS/Che_cosa_sono_i_CSS ---

{{ CSSTutorialTOC() }}

diff --git a/files/it/learn/css/first_steps/index.html b/files/it/learn/css/first_steps/index.html index 106bf156d6..746e5f86f9 100644 --- a/files/it/learn/css/first_steps/index.html +++ b/files/it/learn/css/first_steps/index.html @@ -1,8 +1,9 @@ --- title: Iniziare (Esercitazione di CSS) -slug: Conoscere_i_CSS +slug: Learn/CSS/First_steps translation_of: Learn/CSS/First_steps translation_of_original: Web/Guide/CSS/Getting_started +original_slug: Conoscere_i_CSS ---

Rivolto ai principianti assoluti, questa esercitazione di CSS per principianti presenta il Cascading Style Sheets (CSS). Guida l'utente attraverso le caratteristiche di base del linguaggio con esempi pratici che possono essere provati sul proprio computer e illustra le caratteristiche standard di CSS che funzionano nei moderni browser.

diff --git a/files/it/learn/css/styling_text/styling_links/index.html b/files/it/learn/css/styling_text/styling_links/index.html index b6bdc7a6fa..8e0f51eac3 100644 --- a/files/it/learn/css/styling_text/styling_links/index.html +++ b/files/it/learn/css/styling_text/styling_links/index.html @@ -1,7 +1,8 @@ --- title: Definire gli stili dei link -slug: Learn/CSS/Styling_text/Definire_stili_link +slug: Learn/CSS/Styling_text/Styling_links translation_of: Learn/CSS/Styling_text/Styling_links +original_slug: Learn/CSS/Styling_text/Definire_stili_link ---
{{LearnSidebar}}
diff --git a/files/it/learn/forms/form_validation/index.html b/files/it/learn/forms/form_validation/index.html index 9557758529..b074dab1c1 100644 --- a/files/it/learn/forms/form_validation/index.html +++ b/files/it/learn/forms/form_validation/index.html @@ -1,6 +1,6 @@ --- title: Validazione lato client delle form -slug: Learn/HTML/Forms/Form_validation +slug: Learn/Forms/Form_validation tags: - Apprendere - Esempio @@ -12,6 +12,7 @@ tags: - Web - regex translation_of: Learn/Forms/Form_validation +original_slug: Learn/HTML/Forms/Form_validation ---
{{LearnSidebar}}
diff --git a/files/it/learn/forms/how_to_build_custom_form_controls/index.html b/files/it/learn/forms/how_to_build_custom_form_controls/index.html index 288fa8e1c2..4ec2d16781 100644 --- a/files/it/learn/forms/how_to_build_custom_form_controls/index.html +++ b/files/it/learn/forms/how_to_build_custom_form_controls/index.html @@ -1,7 +1,8 @@ --- title: Come costruire form widget personalizzati -slug: Learn/HTML/Forms/Come_costruire_custom_form_widgets_personalizzati +slug: Learn/Forms/How_to_build_custom_form_controls translation_of: Learn/Forms/How_to_build_custom_form_controls +original_slug: Learn/HTML/Forms/Come_costruire_custom_form_widgets_personalizzati ---
{{PreviousMenuNext("Learn/HTML/Forms/Form_validation", "Learn/HTML/Forms/Sending_forms_through_JavaScript", "Learn/HTML/Forms")}}
diff --git a/files/it/learn/forms/index.html b/files/it/learn/forms/index.html index 45c0d055dd..c001d4be39 100644 --- a/files/it/learn/forms/index.html +++ b/files/it/learn/forms/index.html @@ -1,6 +1,6 @@ --- title: HTML forms -slug: Learn/HTML/Forms +slug: Learn/Forms tags: - Beginner - Featured @@ -13,6 +13,7 @@ tags: - TopicStub - Web translation_of: Learn/Forms +original_slug: Learn/HTML/Forms ---
{{LearnSidebar}}
diff --git a/files/it/learn/getting_started_with_the_web/dealing_with_files/index.html b/files/it/learn/getting_started_with_the_web/dealing_with_files/index.html index d7c574320b..5d4f6f624b 100644 --- a/files/it/learn/getting_started_with_the_web/dealing_with_files/index.html +++ b/files/it/learn/getting_started_with_the_web/dealing_with_files/index.html @@ -1,7 +1,8 @@ --- title: Gestire i file -slug: Learn/Getting_started_with_the_web/Gestire_i_file +slug: Learn/Getting_started_with_the_web/Dealing_with_files translation_of: Learn/Getting_started_with_the_web/Dealing_with_files +original_slug: Learn/Getting_started_with_the_web/Gestire_i_file ---
{{LearnSidebar}}
diff --git a/files/it/learn/getting_started_with_the_web/how_the_web_works/index.html b/files/it/learn/getting_started_with_the_web/how_the_web_works/index.html index 47fb54afda..32c4cc1810 100644 --- a/files/it/learn/getting_started_with_the_web/how_the_web_works/index.html +++ b/files/it/learn/getting_started_with_the_web/how_the_web_works/index.html @@ -1,7 +1,8 @@ --- title: Come funziona il Web -slug: Learn/Getting_started_with_the_web/Come_funziona_il_Web +slug: Learn/Getting_started_with_the_web/How_the_Web_works translation_of: Learn/Getting_started_with_the_web/How_the_Web_works +original_slug: Learn/Getting_started_with_the_web/Come_funziona_il_Web ---
{{LearnSidebar}}
diff --git a/files/it/learn/getting_started_with_the_web/publishing_your_website/index.html b/files/it/learn/getting_started_with_the_web/publishing_your_website/index.html index 933bd4245c..96a721fe9e 100644 --- a/files/it/learn/getting_started_with_the_web/publishing_your_website/index.html +++ b/files/it/learn/getting_started_with_the_web/publishing_your_website/index.html @@ -1,6 +1,6 @@ --- title: Pubblicare il tuo sito -slug: Learn/Getting_started_with_the_web/Pubbicare_sito +slug: Learn/Getting_started_with_the_web/Publishing_your_website tags: - Advanced - Beginner @@ -10,10 +10,11 @@ tags: - Google App Engine - Learn - Web - - 'l10n:priority' + - l10n:priority - publishing - web server translation_of: Learn/Getting_started_with_the_web/Publishing_your_website +original_slug: Learn/Getting_started_with_the_web/Pubbicare_sito ---
{{LearnSidebar}}
diff --git a/files/it/learn/getting_started_with_the_web/what_will_your_website_look_like/index.html b/files/it/learn/getting_started_with_the_web/what_will_your_website_look_like/index.html index 3d3bc69f60..8adb6dbe7d 100644 --- a/files/it/learn/getting_started_with_the_web/what_will_your_website_look_like/index.html +++ b/files/it/learn/getting_started_with_the_web/what_will_your_website_look_like/index.html @@ -1,6 +1,6 @@ --- title: Che aspetto avrà il tuo sito Web? -slug: Learn/Getting_started_with_the_web/Che_aspetto_avrà_il_tuo_sito_web +slug: Learn/Getting_started_with_the_web/What_will_your_website_look_like tags: - Basi - Design @@ -9,6 +9,7 @@ tags: - Web - imparare translation_of: Learn/Getting_started_with_the_web/What_will_your_website_look_like +original_slug: Learn/Getting_started_with_the_web/Che_aspetto_avrà_il_tuo_sito_web ---
{{LearnSidebar}}
diff --git a/files/it/learn/html/howto/use_data_attributes/index.html b/files/it/learn/html/howto/use_data_attributes/index.html index f256a42aaf..836dda37ca 100644 --- a/files/it/learn/html/howto/use_data_attributes/index.html +++ b/files/it/learn/html/howto/use_data_attributes/index.html @@ -1,6 +1,6 @@ --- title: Uso degli attributi data -slug: Learn/HTML/Howto/Uso_attributi_data +slug: Learn/HTML/Howto/Use_data_attributes tags: - Attributi Di Dati Personalizzati - Esempi @@ -9,6 +9,7 @@ tags: - HTML5 - Web translation_of: Learn/HTML/Howto/Use_data_attributes +original_slug: Learn/HTML/Howto/Uso_attributi_data ---
{{LearnSidebar}}
diff --git a/files/it/learn/html/introduction_to_html/html_text_fundamentals/index.html b/files/it/learn/html/introduction_to_html/html_text_fundamentals/index.html index e5496dcb1a..9783c3850d 100644 --- a/files/it/learn/html/introduction_to_html/html_text_fundamentals/index.html +++ b/files/it/learn/html/introduction_to_html/html_text_fundamentals/index.html @@ -1,7 +1,8 @@ --- title: Fondamenti di testo HTML -slug: Learn/HTML/Introduction_to_HTML/fondamenti_di_testo_html +slug: Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals translation_of: Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals +original_slug: Learn/HTML/Introduction_to_HTML/fondamenti_di_testo_html ---
{{LearnSidebar}}
diff --git a/files/it/learn/html/introduction_to_html/the_head_metadata_in_html/index.html b/files/it/learn/html/introduction_to_html/the_head_metadata_in_html/index.html index de092cd8b9..88bb20cbba 100644 --- a/files/it/learn/html/introduction_to_html/the_head_metadata_in_html/index.html +++ b/files/it/learn/html/introduction_to_html/the_head_metadata_in_html/index.html @@ -1,6 +1,6 @@ --- title: Cosa c'è nella head? Metadata in HTML -slug: Learn/HTML/Introduction_to_HTML/I_metadata_nella_head_in_HTML +slug: Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML tags: - Guida - HTML @@ -10,6 +10,7 @@ tags: - lang - metadata translation_of: Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML +original_slug: Learn/HTML/Introduction_to_HTML/I_metadata_nella_head_in_HTML ---
{{LearnSidebar}}
diff --git a/files/it/learn/html/multimedia_and_embedding/responsive_images/index.html b/files/it/learn/html/multimedia_and_embedding/responsive_images/index.html index cc3dbd7892..20c4afe6a2 100644 --- a/files/it/learn/html/multimedia_and_embedding/responsive_images/index.html +++ b/files/it/learn/html/multimedia_and_embedding/responsive_images/index.html @@ -1,7 +1,8 @@ --- title: Immagini reattive -slug: Learn/HTML/Multimedia_and_embedding/immagini_reattive +slug: Learn/HTML/Multimedia_and_embedding/Responsive_images translation_of: Learn/HTML/Multimedia_and_embedding/Responsive_images +original_slug: Learn/HTML/Multimedia_and_embedding/immagini_reattive ---
{{LearnSidebar}}
diff --git a/files/it/learn/html/multimedia_and_embedding/video_and_audio_content/index.html b/files/it/learn/html/multimedia_and_embedding/video_and_audio_content/index.html index 3c15046cd4..a6c5b0f258 100644 --- a/files/it/learn/html/multimedia_and_embedding/video_and_audio_content/index.html +++ b/files/it/learn/html/multimedia_and_embedding/video_and_audio_content/index.html @@ -1,7 +1,8 @@ --- title: Contenuti video e audio -slug: Learn/HTML/Multimedia_and_embedding/contenuti_video_e_audio +slug: Learn/HTML/Multimedia_and_embedding/Video_and_audio_content translation_of: Learn/HTML/Multimedia_and_embedding/Video_and_audio_content +original_slug: Learn/HTML/Multimedia_and_embedding/contenuti_video_e_audio ---
{{LearnSidebar}}
diff --git a/files/it/learn/javascript/first_steps/variables/index.html b/files/it/learn/javascript/first_steps/variables/index.html index 38da82e607..4b6073f0f5 100644 --- a/files/it/learn/javascript/first_steps/variables/index.html +++ b/files/it/learn/javascript/first_steps/variables/index.html @@ -1,7 +1,8 @@ --- title: Memorizzazione delle informazioni necessarie - Variabili -slug: Learn/JavaScript/First_steps/Variabili +slug: Learn/JavaScript/First_steps/Variables translation_of: Learn/JavaScript/First_steps/Variables +original_slug: Learn/JavaScript/First_steps/Variabili ---
{{LearnSidebar}}
diff --git a/files/it/learn/javascript/first_steps/what_went_wrong/index.html b/files/it/learn/javascript/first_steps/what_went_wrong/index.html index 1fa4343de8..a930befda3 100644 --- a/files/it/learn/javascript/first_steps/what_went_wrong/index.html +++ b/files/it/learn/javascript/first_steps/what_went_wrong/index.html @@ -1,7 +1,8 @@ --- title: Cosa è andato storto? Problemi con Javacript -slug: Learn/JavaScript/First_steps/Cosa_è_andato_storto +slug: Learn/JavaScript/First_steps/What_went_wrong translation_of: Learn/JavaScript/First_steps/What_went_wrong +original_slug: Learn/JavaScript/First_steps/Cosa_è_andato_storto ---
{{LearnSidebar}}
diff --git a/files/it/learn/javascript/howto/index.html b/files/it/learn/javascript/howto/index.html index 275eb0cf8d..ce1d7365ea 100644 --- a/files/it/learn/javascript/howto/index.html +++ b/files/it/learn/javascript/howto/index.html @@ -1,10 +1,11 @@ --- title: Risolvere problematiche frequenti nel tuo codice JavaScript -slug: Learn/JavaScript/Comefare +slug: Learn/JavaScript/Howto tags: - Principianti - imparare translation_of: Learn/JavaScript/Howto +original_slug: Learn/JavaScript/Comefare ---
R{{LearnSidebar}}
diff --git a/files/it/learn/javascript/objects/basics/index.html b/files/it/learn/javascript/objects/basics/index.html index 539df5c2e0..ef02b4f1fe 100644 --- a/files/it/learn/javascript/objects/basics/index.html +++ b/files/it/learn/javascript/objects/basics/index.html @@ -1,7 +1,8 @@ --- title: Basi degli oggetti JavaScript -slug: Learn/JavaScript/Oggetti/Basics +slug: Learn/JavaScript/Objects/Basics translation_of: Learn/JavaScript/Objects/Basics +original_slug: Learn/JavaScript/Oggetti/Basics ---
{{LearnSidebar}}
diff --git a/files/it/learn/javascript/objects/index.html b/files/it/learn/javascript/objects/index.html index 5fa859db74..fdf91d26ff 100644 --- a/files/it/learn/javascript/objects/index.html +++ b/files/it/learn/javascript/objects/index.html @@ -1,6 +1,6 @@ --- title: Introduzione agli oggetti in JavaScript -slug: Learn/JavaScript/Oggetti +slug: Learn/JavaScript/Objects tags: - Articolo - Guida @@ -11,6 +11,7 @@ tags: - Verifica - imparare translation_of: Learn/JavaScript/Objects +original_slug: Learn/JavaScript/Oggetti ---
{{LearnSidebar}}
diff --git a/files/it/learn/javascript/objects/json/index.html b/files/it/learn/javascript/objects/json/index.html index 71cf166e15..ba8ad20ede 100644 --- a/files/it/learn/javascript/objects/json/index.html +++ b/files/it/learn/javascript/objects/json/index.html @@ -1,7 +1,8 @@ --- title: Lavorare con JSON -slug: Learn/JavaScript/Oggetti/JSON +slug: Learn/JavaScript/Objects/JSON translation_of: Learn/JavaScript/Objects/JSON +original_slug: Learn/JavaScript/Oggetti/JSON ---
{{LearnSidebar}}
diff --git a/files/it/learn/server-side/django/introduction/index.html b/files/it/learn/server-side/django/introduction/index.html index 4eb36683eb..bf5874c4d8 100644 --- a/files/it/learn/server-side/django/introduction/index.html +++ b/files/it/learn/server-side/django/introduction/index.html @@ -1,6 +1,6 @@ --- title: Introduzione a Django -slug: Learn/Server-side/Django/Introduzione +slug: Learn/Server-side/Django/Introduction tags: - Introduzione - Learn @@ -9,6 +9,7 @@ tags: - django - programmazione lato server translation_of: Learn/Server-side/Django/Introduction +original_slug: Learn/Server-side/Django/Introduzione ---
{{LearnSidebar}}
diff --git a/files/it/mdn/at_ten/index.html b/files/it/mdn/at_ten/index.html index ab7c64d1ad..78aa58a464 100644 --- a/files/it/mdn/at_ten/index.html +++ b/files/it/mdn/at_ten/index.html @@ -1,11 +1,12 @@ --- title: 10 anni di MDN -slug: MDN_at_ten +slug: MDN/At_ten tags: - History - Landing - MDN Meta translation_of: MDN_at_ten +original_slug: MDN_at_ten ---

Celebra 10 anni di documentazione Web.

diff --git a/files/it/mdn/contribute/howto/create_and_edit_pages/index.html b/files/it/mdn/contribute/howto/create_and_edit_pages/index.html index 2ffa7888a4..260f3562b3 100644 --- a/files/it/mdn/contribute/howto/create_and_edit_pages/index.html +++ b/files/it/mdn/contribute/howto/create_and_edit_pages/index.html @@ -1,7 +1,8 @@ --- -title: 'creare., edizione paginaCreazione e modifica delle pagine' -slug: MDN/Contribute/Creating_and_editing_pages +title: creare., edizione paginaCreazione e modifica delle pagine +slug: MDN/Contribute/Howto/Create_and_edit_pages translation_of: MDN/Contribute/Howto/Create_and_edit_pages +original_slug: MDN/Contribute/Creating_and_editing_pages ---
{{MDNSidebar}}

Modificare e creare una pagina sono le due attività più comuni per la maggior parte dei  COLLABORATORI MDN.  Questo articolo spiega come eseguire queste due operazioni.

diff --git a/files/it/mdn/guidelines/conventions_definitions/index.html b/files/it/mdn/guidelines/conventions_definitions/index.html index 2aadc92c27..ab679a4188 100644 --- a/files/it/mdn/guidelines/conventions_definitions/index.html +++ b/files/it/mdn/guidelines/conventions_definitions/index.html @@ -1,11 +1,12 @@ --- title: Migliore pratica -slug: MDN/Guidelines/Migliore_pratica +slug: MDN/Guidelines/Conventions_definitions tags: - Guida - MDN Meta - linee guida translation_of: MDN/Guidelines/Conventions_definitions +original_slug: MDN/Guidelines/Migliore_pratica ---
{{MDNSidebar}}

Quest'articolo descrive i metodi raccomandati di lavoro con il contenuto su MDN. Queste linee guida descrivono i metodi preferiti per fare tutto ciò che porta ad un miglior risultato, o offrire un consiglio nel decidere tra diversi metodi nel fare cose simili.

diff --git a/files/it/mdn/structures/compatibility_tables/index.html b/files/it/mdn/structures/compatibility_tables/index.html index 81ee695696..7ec7f86a68 100644 --- a/files/it/mdn/structures/compatibility_tables/index.html +++ b/files/it/mdn/structures/compatibility_tables/index.html @@ -1,7 +1,8 @@ --- title: Tabelle di compatibilità -slug: MDN/Structures/Tabelle_compatibilità +slug: MDN/Structures/Compatibility_tables translation_of: MDN/Structures/Compatibility_tables +original_slug: MDN/Structures/Tabelle_compatibilità ---
{{MDNSidebar}}
{{IncludeSubnav("/en-US/docs/MDN")}}
diff --git a/files/it/mdn/structures/macros/index.html b/files/it/mdn/structures/macros/index.html index a09cf37e30..4e3a169a23 100644 --- a/files/it/mdn/structures/macros/index.html +++ b/files/it/mdn/structures/macros/index.html @@ -1,9 +1,10 @@ --- title: Using macros on MDN -slug: MDN/Guidelines/Macros +slug: MDN/Structures/Macros tags: - italino tags translation_of: MDN/Structures/Macros +original_slug: MDN/Guidelines/Macros ---
{{MDNSidebar}}

The Kuma platform on which MDN runs provides a powerful macro system, KumaScript, which makes it possible to do a wide variety of things automatically. This article provides information on how to invoke MDN's macros within articles.

diff --git a/files/it/mozilla/add-ons/webextensions/content_scripts/index.html b/files/it/mozilla/add-ons/webextensions/content_scripts/index.html index 4ee11316c5..109482f57e 100644 --- a/files/it/mozilla/add-ons/webextensions/content_scripts/index.html +++ b/files/it/mozilla/add-ons/webextensions/content_scripts/index.html @@ -1,9 +1,10 @@ --- title: Script di contenuto -slug: Mozilla/Add-ons/WebExtensions/Script_contenuto +slug: Mozilla/Add-ons/WebExtensions/Content_scripts tags: - WebExtensions translation_of: Mozilla/Add-ons/WebExtensions/Content_scripts +original_slug: Mozilla/Add-ons/WebExtensions/Script_contenuto ---
{{AddonSidebar}}
diff --git a/files/it/mozilla/add-ons/webextensions/what_are_webextensions/index.html b/files/it/mozilla/add-ons/webextensions/what_are_webextensions/index.html index c74fbd8473..94139ae0ae 100644 --- a/files/it/mozilla/add-ons/webextensions/what_are_webextensions/index.html +++ b/files/it/mozilla/add-ons/webextensions/what_are_webextensions/index.html @@ -1,10 +1,11 @@ --- title: Cosa sono le estensioni? -slug: Mozilla/Add-ons/WebExtensions/Cosa_sono_le_WebExtensions +slug: Mozilla/Add-ons/WebExtensions/What_are_WebExtensions tags: - Estensioni - WebExtension translation_of: Mozilla/Add-ons/WebExtensions/What_are_WebExtensions +original_slug: Mozilla/Add-ons/WebExtensions/Cosa_sono_le_WebExtensions ---
{{AddonSidebar}}
diff --git a/files/it/mozilla/add-ons/webextensions/your_first_webextension/index.html b/files/it/mozilla/add-ons/webextensions/your_first_webextension/index.html index fac1b12e36..88781a40c2 100644 --- a/files/it/mozilla/add-ons/webextensions/your_first_webextension/index.html +++ b/files/it/mozilla/add-ons/webextensions/your_first_webextension/index.html @@ -1,10 +1,11 @@ --- title: La tua prima estensione -slug: Mozilla/Add-ons/WebExtensions/La_tua_prima_WebExtension +slug: Mozilla/Add-ons/WebExtensions/Your_first_WebExtension tags: - Guida - WebExtension translation_of: Mozilla/Add-ons/WebExtensions/Your_first_WebExtension +original_slug: Mozilla/Add-ons/WebExtensions/La_tua_prima_WebExtension ---
{{AddonSidebar}}
diff --git a/files/it/mozilla/firefox/experimental_features/index.html b/files/it/mozilla/firefox/experimental_features/index.html index 2cc528ad36..1ae49b3ab3 100644 --- a/files/it/mozilla/firefox/experimental_features/index.html +++ b/files/it/mozilla/firefox/experimental_features/index.html @@ -1,7 +1,8 @@ --- title: Funzionalità sperimentali in Firefox -slug: Mozilla/Firefox/Funzionalità_sperimentali +slug: Mozilla/Firefox/Experimental_features translation_of: Mozilla/Firefox/Experimental_features +original_slug: Mozilla/Firefox/Funzionalità_sperimentali ---
{{FirefoxSidebar}}
diff --git a/files/it/mozilla/firefox/releases/1.5/adapting_xul_applications_for_firefox_1.5/index.html b/files/it/mozilla/firefox/releases/1.5/adapting_xul_applications_for_firefox_1.5/index.html index 7062b6a3ae..8781c43c6c 100644 --- a/files/it/mozilla/firefox/releases/1.5/adapting_xul_applications_for_firefox_1.5/index.html +++ b/files/it/mozilla/firefox/releases/1.5/adapting_xul_applications_for_firefox_1.5/index.html @@ -1,11 +1,12 @@ --- title: Adattare le applicazioni XUL a Firefox 1.5 -slug: Adattare_le_applicazioni_XUL_a_Firefox_1.5 +slug: Mozilla/Firefox/Releases/1.5/Adapting_XUL_Applications_for_Firefox_1.5 tags: - Estensioni - Tutte_le_categorie - XUL translation_of: Mozilla/Firefox/Releases/1.5/Adapting_XUL_Applications_for_Firefox_1.5 +original_slug: Adattare_le_applicazioni_XUL_a_Firefox_1.5 ---
{{FirefoxSidebar}}

 

diff --git a/files/it/mozilla/firefox/releases/1.5/index.html b/files/it/mozilla/firefox/releases/1.5/index.html index 6c47af6552..e7299f00b5 100644 --- a/files/it/mozilla/firefox/releases/1.5/index.html +++ b/files/it/mozilla/firefox/releases/1.5/index.html @@ -1,11 +1,12 @@ --- title: Firefox 1.5 per Sviluppatori -slug: Firefox_1.5_per_Sviluppatori +slug: Mozilla/Firefox/Releases/1.5 tags: - Da_unire - Sviluppo_Web - Tutte_le_categorie translation_of: Mozilla/Firefox/Releases/1.5 +original_slug: Firefox_1.5_per_Sviluppatori ---
{{FirefoxSidebar}}

Firefox 1.5

diff --git a/files/it/mozilla/firefox/releases/18/index.html b/files/it/mozilla/firefox/releases/18/index.html index 41af59d3c9..7a24df60c8 100644 --- a/files/it/mozilla/firefox/releases/18/index.html +++ b/files/it/mozilla/firefox/releases/18/index.html @@ -1,10 +1,11 @@ --- title: Firefox 18 per sviluppatori -slug: Firefox_18_for_developers +slug: Mozilla/Firefox/Releases/18 tags: - Firefox - Firefox 18 translation_of: Mozilla/Firefox/Releases/18 +original_slug: Firefox_18_for_developers ---
{{FirefoxSidebar}}

{{ draft() }}

diff --git a/files/it/mozilla/firefox/releases/2/index.html b/files/it/mozilla/firefox/releases/2/index.html index 4f8d46f2cf..6ebca8fe1e 100644 --- a/files/it/mozilla/firefox/releases/2/index.html +++ b/files/it/mozilla/firefox/releases/2/index.html @@ -1,10 +1,11 @@ --- title: Firefox 2.0 per Sviluppatori -slug: Firefox_2.0_per_Sviluppatori +slug: Mozilla/Firefox/Releases/2 tags: - Sviluppo_Web - Tutte_le_categorie translation_of: Mozilla/Firefox/Releases/2 +original_slug: Firefox_2.0_per_Sviluppatori ---
{{FirefoxSidebar}}

Nuove funzionalità per sviluppatori in Firefox 2

diff --git a/files/it/orphaned/learn/how_to_contribute/index.html b/files/it/orphaned/learn/how_to_contribute/index.html index bd3d90966a..763cf1224c 100644 --- a/files/it/orphaned/learn/how_to_contribute/index.html +++ b/files/it/orphaned/learn/how_to_contribute/index.html @@ -1,6 +1,6 @@ --- title: Come contribuire nell'area di MDN dedicata all'apprendimento -slug: Learn/Come_contribuire +slug: orphaned/Learn/How_to_contribute tags: - Apprendimento - Articolo @@ -13,6 +13,7 @@ tags: - insegnante - sviluppatore translation_of: Learn/How_to_contribute +original_slug: Learn/Come_contribuire ---

{{LearnSidebar}}

diff --git a/files/it/orphaned/learn/html/forms/html5_updates/index.html b/files/it/orphaned/learn/html/forms/html5_updates/index.html index 509b0a278f..c113527b94 100644 --- a/files/it/orphaned/learn/html/forms/html5_updates/index.html +++ b/files/it/orphaned/learn/html/forms/html5_updates/index.html @@ -1,7 +1,8 @@ --- title: Forms in HTML5 -slug: Web/HTML/Forms_in_HTML +slug: orphaned/Learn/HTML/Forms/HTML5_updates translation_of: Learn/HTML/Forms/HTML5_updates +original_slug: Web/HTML/Forms_in_HTML ---
{{gecko_minversion_header("2")}}
diff --git a/files/it/orphaned/mdn/community/index.html b/files/it/orphaned/mdn/community/index.html index 14a121baca..0e4959e3f7 100644 --- a/files/it/orphaned/mdn/community/index.html +++ b/files/it/orphaned/mdn/community/index.html @@ -1,7 +1,8 @@ --- title: Join the MDN community -slug: MDN/Community +slug: orphaned/MDN/Community translation_of: MDN/Community +original_slug: MDN/Community ---
{{MDNSidebar}}
diff --git a/files/it/orphaned/mdn/contribute/howto/create_an_mdn_account/index.html b/files/it/orphaned/mdn/contribute/howto/create_an_mdn_account/index.html index c6759dc479..94100b271a 100644 --- a/files/it/orphaned/mdn/contribute/howto/create_an_mdn_account/index.html +++ b/files/it/orphaned/mdn/contribute/howto/create_an_mdn_account/index.html @@ -1,6 +1,6 @@ --- title: Come creare un account su MDN -slug: MDN/Contribute/Howto/Create_an_MDN_account +slug: orphaned/MDN/Contribute/Howto/Create_an_MDN_account tags: - Documentazione - Guide @@ -8,6 +8,7 @@ tags: - Principianti - Sviluppatori translation_of: MDN/Contribute/Howto/Create_an_MDN_account +original_slug: MDN/Contribute/Howto/Create_an_MDN_account ---
{{MDNSidebar}}
diff --git a/files/it/orphaned/mdn/contribute/howto/delete_my_profile/index.html b/files/it/orphaned/mdn/contribute/howto/delete_my_profile/index.html index 182bc6a241..93badea1a1 100644 --- a/files/it/orphaned/mdn/contribute/howto/delete_my_profile/index.html +++ b/files/it/orphaned/mdn/contribute/howto/delete_my_profile/index.html @@ -1,7 +1,8 @@ --- title: Come rimuovere il mio profilo -slug: MDN/Contribute/Howto/Delete_my_profile +slug: orphaned/MDN/Contribute/Howto/Delete_my_profile translation_of: MDN/Contribute/Howto/Delete_my_profile +original_slug: MDN/Contribute/Howto/Delete_my_profile ---
{{MDNSidebar}}
diff --git a/files/it/orphaned/mdn/contribute/howto/do_a_technical_review/index.html b/files/it/orphaned/mdn/contribute/howto/do_a_technical_review/index.html index 31f0885a09..c17824a1c9 100644 --- a/files/it/orphaned/mdn/contribute/howto/do_a_technical_review/index.html +++ b/files/it/orphaned/mdn/contribute/howto/do_a_technical_review/index.html @@ -1,7 +1,8 @@ --- title: Come effettuare una revisione tecnica -slug: MDN/Contribute/Howto/Do_a_technical_review +slug: orphaned/MDN/Contribute/Howto/Do_a_technical_review translation_of: MDN/Contribute/Howto/Do_a_technical_review +original_slug: MDN/Contribute/Howto/Do_a_technical_review ---
{{MDNSidebar}}

La revisione tecnica consiste nel controllo dell'accuratezza tecnica e della completezza di un articolo e, se necessario, nella sua correzione. Se chi scrive un articolo desidera che qualcun altro verifichi il contenuto tecnico di un articolo, può segnalarlo attivando l'opzione "Revisione tecnica" durante la modifica di una pagina. A volte chi scrive contatta un ingegnere specifico affinché effettui la revisione tecnica, ma chiunque abbia esperienza tecnica può farlo.

Questo articolo spiega come effettuare una revisione tecnica, permettendo così di mantenere corretto il contenuto di MDN.

diff --git a/files/it/orphaned/mdn/contribute/howto/do_an_editorial_review/index.html b/files/it/orphaned/mdn/contribute/howto/do_an_editorial_review/index.html index 7bfc4bf759..afbc9a9654 100644 --- a/files/it/orphaned/mdn/contribute/howto/do_an_editorial_review/index.html +++ b/files/it/orphaned/mdn/contribute/howto/do_an_editorial_review/index.html @@ -1,7 +1,8 @@ --- title: Come effettuare una revisione editoriale -slug: MDN/Contribute/Howto/Do_an_editorial_review +slug: orphaned/MDN/Contribute/Howto/Do_an_editorial_review translation_of: MDN/Contribute/Howto/Do_an_editorial_review +original_slug: MDN/Contribute/Howto/Do_an_editorial_review ---
{{MDNSidebar}}

Una revisione editoriale consiste nel sistemare errori di digitazione, grammatica, utilizzo, ortografia in un articolo. Non tutti i collaboratori sono traduttori esperti, ma data la loro conoscenza hanno scritto articoli estremamente utili, che necessitano di revisioni e correzioni; questo è lo scopo della revisione editoriale.

Questo articolo descrive come eseguire una revisione editoriale, così da accertarsi che il contenuto di MDN sia accurato.

diff --git a/files/it/orphaned/mdn/contribute/howto/set_the_summary_for_a_page/index.html b/files/it/orphaned/mdn/contribute/howto/set_the_summary_for_a_page/index.html index ba8df38979..4516b58115 100644 --- a/files/it/orphaned/mdn/contribute/howto/set_the_summary_for_a_page/index.html +++ b/files/it/orphaned/mdn/contribute/howto/set_the_summary_for_a_page/index.html @@ -1,6 +1,6 @@ --- title: Come impostare il riassunto di una pagina -slug: MDN/Contribute/Howto/impostare_il_riassunto_di_una_pagina +slug: orphaned/MDN/Contribute/Howto/Set_the_summary_for_a_page tags: - Community - Documentazione @@ -8,6 +8,7 @@ tags: - MDN - Riassunto Pagina translation_of: MDN/Contribute/Howto/Set_the_summary_for_a_page +original_slug: MDN/Contribute/Howto/impostare_il_riassunto_di_una_pagina ---
{{MDNSidebar}}

Il riassunto di una pagina di MDN è definito in modo da essere utilizzabile in vari ambiti, tra cui i risultati dei motori di ricerca, in altre pagine di MDN, come ad esempio nelle landing pages relative a diversi argomenti, e nei tooltips. Deve essere quindi un testo che conservi il proprio significato sia nel contesto della propria pagina, sia quando si trova in contesti differenti, privato dei contenuti della pagina di origine.

Un riassunto può essere identificato esplicitamente all'interno della pagina. In caso contrario, si utilizza in genere la prima frase, il che non sempre si rivela la scelta più adatta per raggiungere lo scopo prefissato.

diff --git a/files/it/orphaned/mdn/editor/index.html b/files/it/orphaned/mdn/editor/index.html index 856ef1fc2d..cafec4c9df 100644 --- a/files/it/orphaned/mdn/editor/index.html +++ b/files/it/orphaned/mdn/editor/index.html @@ -1,7 +1,8 @@ --- title: Guida all'editor di MDN -slug: MDN/Editor +slug: orphaned/MDN/Editor translation_of: MDN/Editor +original_slug: MDN/Editor ---
{{MDNSidebar}}

L'editor WYSIWYG (what-you-see-is-what-you-get, ciò che vedi è ciò che ottieni) messo a disposizione dal wiki del Mozilla Developer Network semplifica la creazione di nuovi contenuti. La guida all'editor di MDN fornisce alcune informazioni sull'utilizzo dell'editor e su alcune caratteristiche utili che possono migliorare la tua produttività.

La guida di stile di MDN fornisce alcune informazioni sulla formattazione e lo stile da applicare ai contenuti, comprese le regole di grammatica che preferiamo vengano utilizzate.

diff --git a/files/it/orphaned/tools/add-ons/dom_inspector/index.html b/files/it/orphaned/tools/add-ons/dom_inspector/index.html index d6566854ca..bf4520fb3b 100644 --- a/files/it/orphaned/tools/add-ons/dom_inspector/index.html +++ b/files/it/orphaned/tools/add-ons/dom_inspector/index.html @@ -1,18 +1,19 @@ --- title: DOM Inspector -slug: DOM_Inspector +slug: orphaned/Tools/Add-ons/DOM_Inspector tags: - - 'DOM:Strumenti' + - DOM:Strumenti - Estensioni - - 'Estensioni:Strumenti' + - Estensioni:Strumenti - Strumenti - Sviluppo_Web - - 'Sviluppo_Web:Strumenti' - - 'Temi:Strumenti' + - Sviluppo_Web:Strumenti + - Temi:Strumenti - Tutte_le_categorie - XUL - - 'XUL:Strumenti' + - XUL:Strumenti translation_of: Tools/Add-ons/DOM_Inspector +original_slug: DOM_Inspector ---

Il DOM Inspector (conosciuto anche con l'acronimo DOMi) è un tool di Mozilla usato per ispezionare, visualizzare, modificare il Modello a Oggetti di un Documento (DOM - Document Object Model), normalmente una pagina web o una finestra XUL. diff --git a/files/it/orphaned/tools/add-ons/index.html b/files/it/orphaned/tools/add-ons/index.html index 53b7924169..416e88484d 100644 --- a/files/it/orphaned/tools/add-ons/index.html +++ b/files/it/orphaned/tools/add-ons/index.html @@ -1,12 +1,13 @@ --- title: Add-ons -slug: Tools/Add-ons +slug: orphaned/Tools/Add-ons tags: - NeedsTranslation - TopicStub - Web Development - - 'Web Development:Tools' + - Web Development:Tools translation_of: Tools/Add-ons +original_slug: Tools/Add-ons ---

Developer tools that are not built into Firefox, but ship as separate add-ons.

diff --git a/files/it/orphaned/web/javascript/reference/global_objects/array/prototype/index.html b/files/it/orphaned/web/javascript/reference/global_objects/array/prototype/index.html index d4989792a8..5fe2af7f43 100644 --- a/files/it/orphaned/web/javascript/reference/global_objects/array/prototype/index.html +++ b/files/it/orphaned/web/javascript/reference/global_objects/array/prototype/index.html @@ -1,7 +1,8 @@ --- title: Array.prototype -slug: Web/JavaScript/Reference/Global_Objects/Array/prototype +slug: orphaned/Web/JavaScript/Reference/Global_Objects/Array/prototype translation_of: Web/JavaScript/Reference/Global_Objects/Array/prototype +original_slug: Web/JavaScript/Reference/Global_Objects/Array/prototype ---
{{JSRef}}
diff --git a/files/it/tools/performance/index.html b/files/it/tools/performance/index.html index 30117d7c02..800e6b4835 100644 --- a/files/it/tools/performance/index.html +++ b/files/it/tools/performance/index.html @@ -1,7 +1,8 @@ --- title: Prestazioni -slug: Tools/Prestazioni +slug: Tools/Performance translation_of: Tools/Performance +original_slug: Tools/Prestazioni ---

Lo strumento per l'analisi delle prestazioni ti fornisce una panoramica della risposta generale del tuo sito, della prestazione del layout e del Javascript. Con lo strumento per l'analisi delle prestazioni crei una registrazione, o tracci un profilo, del tuo sito in un periodo di tempo. Lo strumento ti mostra poi un resoconto delle cose che il tuo browser stava facendo al fine di rappresentare il tuo sito nel profilo, ed un grafico del frame rate nel profilo.

diff --git a/files/it/tools/responsive_design_mode/index.html b/files/it/tools/responsive_design_mode/index.html index 09fd2cb08c..3dd8c822ed 100644 --- a/files/it/tools/responsive_design_mode/index.html +++ b/files/it/tools/responsive_design_mode/index.html @@ -1,6 +1,6 @@ --- title: Visualizzazione Flessibile -slug: Tools/Visualizzazione_Flessibile +slug: Tools/Responsive_Design_Mode tags: - Design - Firefox @@ -11,6 +11,7 @@ tags: - Sviluppo Web - responsive translation_of: Tools/Responsive_Design_Mode +original_slug: Tools/Visualizzazione_Flessibile ---

Le interfacce web responsive si adattano a diverse dimensioni di schermo permettendo una presentazione fruibile su dispositivi di tipo diverso, come smartphone o tablet. La Visualizzazione Flessibile permette di visionare facilmente come il proprio sito o applicazione web risulterà su schermi di diverse dimensioni.

diff --git a/files/it/web/api/canvas_api/index.html b/files/it/web/api/canvas_api/index.html index dcded63973..17a61b52e3 100644 --- a/files/it/web/api/canvas_api/index.html +++ b/files/it/web/api/canvas_api/index.html @@ -1,7 +1,8 @@ --- title: Canvas -slug: Web/HTML/Canvas +slug: Web/API/Canvas_API translation_of: Web/API/Canvas_API +original_slug: Web/HTML/Canvas ---

Aggiunto con HTML5, HTML {{ HTMLElement("canvas") }} è un elemento che può essere usato per disegnare elementi grafici tramite script (di solito JavaScript). Per esempio, può essere usato per disegnare grafici, creare composizioni fotografiche, creare animazioni e perfino realizzare elvaborazioni video in tempo reale.

diff --git a/files/it/web/api/canvas_api/tutorial/index.html b/files/it/web/api/canvas_api/tutorial/index.html index 577a620cb7..9e3fe00f2e 100644 --- a/files/it/web/api/canvas_api/tutorial/index.html +++ b/files/it/web/api/canvas_api/tutorial/index.html @@ -1,10 +1,11 @@ --- title: Tutorial sulle Canvas -slug: Tutorial_sulle_Canvas +slug: Web/API/Canvas_API/Tutorial tags: - Canvas tutorial - - 'HTML:Canvas' + - HTML:Canvas translation_of: Web/API/Canvas_API/Tutorial +original_slug: Tutorial_sulle_Canvas ---

<canvas> è un nuovo elemento HTML che può essere utilizzato per disegnare elementi grafici utilizzando lo scripting (di solito JavaScript). Per esempio può essere utilizzato per disegnare grafici, fare composizioni di fotografie o semplici (e non così semplici) animazioni. L'immagine a destra mostra alcuni esempi di implementazioni di <canvas> che vedremo più avanti in questo tutorial.

diff --git a/files/it/web/api/document_object_model/introduction/index.html b/files/it/web/api/document_object_model/introduction/index.html index 328caa0c5c..a3495f7665 100644 --- a/files/it/web/api/document_object_model/introduction/index.html +++ b/files/it/web/api/document_object_model/introduction/index.html @@ -1,6 +1,6 @@ --- title: Introduzione al DOM -slug: Web/API/Document_Object_Model/Introduzione +slug: Web/API/Document_Object_Model/Introduction tags: - Beginner - DOM @@ -10,6 +10,7 @@ tags: - Principianti - Tutorial translation_of: Web/API/Document_Object_Model/Introduction +original_slug: Web/API/Document_Object_Model/Introduzione ---

Il Document Object Model (DOM) è la rappresentazione degli oggetti che comprendono la struttura e il contenuto di un documento sul web. In questa guida, introdurremo brevemente il DOM. Vedremo come il DOM rappresenta un documento {{Glossary("HTML")}} o {{Glossary("XML")}} in memoria e come puoi usare le APIs per creare contenuti web e applicazioni.

diff --git a/files/it/web/api/documentorshadowroot/stylesheets/index.html b/files/it/web/api/documentorshadowroot/stylesheets/index.html index 3aa006a94f..95f590715d 100644 --- a/files/it/web/api/documentorshadowroot/stylesheets/index.html +++ b/files/it/web/api/documentorshadowroot/stylesheets/index.html @@ -1,6 +1,6 @@ --- title: document.styleSheets -slug: Web/API/Document/styleSheets +slug: Web/API/DocumentOrShadowRoot/styleSheets tags: - DOM - Gecko @@ -8,6 +8,7 @@ tags: - Tutte_le_categorie translation_of: Web/API/DocumentOrShadowRoot/styleSheets translation_of_original: Web/API/Document/styleSheets +original_slug: Web/API/Document/styleSheets ---

{{APIRef("DOM")}}

diff --git a/files/it/web/api/eventtarget/addeventlistener/index.html b/files/it/web/api/eventtarget/addeventlistener/index.html index 6608e69bd3..36aaeb792f 100644 --- a/files/it/web/api/eventtarget/addeventlistener/index.html +++ b/files/it/web/api/eventtarget/addeventlistener/index.html @@ -1,6 +1,6 @@ --- title: EventTarget.addEventListener() -slug: Web/API/Element/addEventListener +slug: Web/API/EventTarget/addEventListener tags: - API - DOM @@ -16,6 +16,7 @@ tags: - metodo - mselementresize translation_of: Web/API/EventTarget/addEventListener +original_slug: Web/API/Element/addEventListener ---
{{APIRef("DOM Events")}}
diff --git a/files/it/web/api/geolocation_api/index.html b/files/it/web/api/geolocation_api/index.html index 303cb4a8bb..64fb909e34 100644 --- a/files/it/web/api/geolocation_api/index.html +++ b/files/it/web/api/geolocation_api/index.html @@ -1,7 +1,8 @@ --- title: Using geolocation -slug: Web/API/Geolocation/Using_geolocation +slug: Web/API/Geolocation_API translation_of: Web/API/Geolocation_API +original_slug: Web/API/Geolocation/Using_geolocation ---

{{securecontext_header}}{{APIRef("Geolocation API")}}

diff --git a/files/it/web/api/htmlhyperlinkelementutils/index.html b/files/it/web/api/htmlhyperlinkelementutils/index.html index 05cc01aa9b..e62eda611d 100644 --- a/files/it/web/api/htmlhyperlinkelementutils/index.html +++ b/files/it/web/api/htmlhyperlinkelementutils/index.html @@ -1,7 +1,8 @@ --- title: URLUtils -slug: Web/API/URLUtils +slug: Web/API/HTMLHyperlinkElementUtils translation_of: Web/API/HTMLHyperlinkElementUtils +original_slug: Web/API/URLUtils ---

{{ApiRef("URL API")}}{{SeeCompatTable}}

diff --git a/files/it/web/api/keyboardevent/charcode/index.html b/files/it/web/api/keyboardevent/charcode/index.html index fb785e722e..4dbc90bf17 100644 --- a/files/it/web/api/keyboardevent/charcode/index.html +++ b/files/it/web/api/keyboardevent/charcode/index.html @@ -1,12 +1,13 @@ --- title: event.charCode -slug: Web/API/Event/charCode +slug: Web/API/KeyboardEvent/charCode tags: - DOM - Gecko - Reference_del_DOM_di_Gecko - Tutte_le_categorie translation_of: Web/API/KeyboardEvent/charCode +original_slug: Web/API/Event/charCode ---

{{ ApiRef() }}

Sommario

diff --git a/files/it/web/api/keyboardevent/keycode/index.html b/files/it/web/api/keyboardevent/keycode/index.html index 40dac8122d..8c212fac97 100644 --- a/files/it/web/api/keyboardevent/keycode/index.html +++ b/files/it/web/api/keyboardevent/keycode/index.html @@ -1,6 +1,6 @@ --- title: event.keyCode -slug: Web/API/Event/keyCode +slug: Web/API/KeyboardEvent/keyCode tags: - DOM - Gecko @@ -8,6 +8,7 @@ tags: - Tutte_le_categorie translation_of: Web/API/KeyboardEvent/keyCode translation_of_original: Web/API/event.keyCode +original_slug: Web/API/Event/keyCode ---

{{ ApiRef() }}

Sommario

diff --git a/files/it/web/api/keyboardevent/which/index.html b/files/it/web/api/keyboardevent/which/index.html index 0ab544b60c..4d5d567468 100644 --- a/files/it/web/api/keyboardevent/which/index.html +++ b/files/it/web/api/keyboardevent/which/index.html @@ -1,12 +1,13 @@ --- title: event.which -slug: Web/API/Event/which +slug: Web/API/KeyboardEvent/which tags: - DOM - Gecko - Reference_del_DOM_di_Gecko - Tutte_le_categorie translation_of: Web/API/KeyboardEvent/which +original_slug: Web/API/Event/which ---

{{ ApiRef() }}

Sommario

diff --git a/files/it/web/api/mouseevent/altkey/index.html b/files/it/web/api/mouseevent/altkey/index.html index 02412cfe6c..b282dcb2ee 100644 --- a/files/it/web/api/mouseevent/altkey/index.html +++ b/files/it/web/api/mouseevent/altkey/index.html @@ -1,6 +1,6 @@ --- title: event.altKey -slug: Web/API/Event/altKey +slug: Web/API/MouseEvent/altKey tags: - DOM - Gecko @@ -8,6 +8,7 @@ tags: - Tutte_le_categorie translation_of: Web/API/MouseEvent/altKey translation_of_original: Web/API/event.altKey +original_slug: Web/API/Event/altKey ---

{{ ApiRef() }}

Sommario

diff --git a/files/it/web/api/mouseevent/button/index.html b/files/it/web/api/mouseevent/button/index.html index 7c1f181858..ff3d67d702 100644 --- a/files/it/web/api/mouseevent/button/index.html +++ b/files/it/web/api/mouseevent/button/index.html @@ -1,6 +1,6 @@ --- title: event.button -slug: Web/API/Event/button +slug: Web/API/MouseEvent/button tags: - DOM - Gecko @@ -8,6 +8,7 @@ tags: - Tutte_le_categorie translation_of: Web/API/MouseEvent/button translation_of_original: Web/API/event.button +original_slug: Web/API/Event/button ---

{{ ApiRef() }}

Sommario

diff --git a/files/it/web/api/mouseevent/ctrlkey/index.html b/files/it/web/api/mouseevent/ctrlkey/index.html index 195374d673..c4ce9255e8 100644 --- a/files/it/web/api/mouseevent/ctrlkey/index.html +++ b/files/it/web/api/mouseevent/ctrlkey/index.html @@ -1,6 +1,6 @@ --- title: event.ctrlKey -slug: Web/API/Event/ctrlKey +slug: Web/API/MouseEvent/ctrlKey tags: - DOM - Gecko @@ -8,6 +8,7 @@ tags: - Tutte_le_categorie translation_of: Web/API/MouseEvent/ctrlKey translation_of_original: Web/API/event.ctrlKey +original_slug: Web/API/Event/ctrlKey ---

{{ ApiRef() }}

Sommario

diff --git a/files/it/web/api/mouseevent/metakey/index.html b/files/it/web/api/mouseevent/metakey/index.html index e40fa17379..b97904a5d4 100644 --- a/files/it/web/api/mouseevent/metakey/index.html +++ b/files/it/web/api/mouseevent/metakey/index.html @@ -1,6 +1,6 @@ --- title: event.metaKey -slug: Web/API/Event/metaKey +slug: Web/API/MouseEvent/metaKey tags: - DOM - Gecko @@ -8,6 +8,7 @@ tags: - Tutte_le_categorie translation_of: Web/API/MouseEvent/metaKey translation_of_original: Web/API/event.metaKey +original_slug: Web/API/Event/metaKey ---

{{ ApiRef() }}

Sommario

diff --git a/files/it/web/api/mouseevent/shiftkey/index.html b/files/it/web/api/mouseevent/shiftkey/index.html index 17a581937f..3365619bf1 100644 --- a/files/it/web/api/mouseevent/shiftkey/index.html +++ b/files/it/web/api/mouseevent/shiftkey/index.html @@ -1,6 +1,6 @@ --- title: event.shiftKey -slug: Web/API/Event/shiftKey +slug: Web/API/MouseEvent/shiftKey tags: - DOM - Gecko @@ -8,6 +8,7 @@ tags: - Tutte_le_categorie translation_of: Web/API/MouseEvent/shiftKey translation_of_original: Web/API/event.shiftKey +original_slug: Web/API/Event/shiftKey ---

{{ ApiRef() }}

Sommario

diff --git a/files/it/web/api/node/childnodes/index.html b/files/it/web/api/node/childnodes/index.html index f56bcc4380..1db83ea87c 100644 --- a/files/it/web/api/node/childnodes/index.html +++ b/files/it/web/api/node/childnodes/index.html @@ -1,7 +1,8 @@ --- title: Node.childNodes -slug: Web/API/Element/childNodes +slug: Web/API/Node/childNodes translation_of: Web/API/Node/childNodes +original_slug: Web/API/Element/childNodes ---
{{APIRef("DOM")}}
diff --git a/files/it/web/api/node/firstchild/index.html b/files/it/web/api/node/firstchild/index.html index b5052f5dfe..b99b694dbe 100644 --- a/files/it/web/api/node/firstchild/index.html +++ b/files/it/web/api/node/firstchild/index.html @@ -1,6 +1,6 @@ --- title: Node.firstChild -slug: Web/API/Element/firstChild +slug: Web/API/Node/firstChild tags: - API - DOM @@ -8,6 +8,7 @@ tags: - Proprietà - Referenza translation_of: Web/API/Node/firstChild +original_slug: Web/API/Element/firstChild ---
{{APIRef("DOM")}}
diff --git a/files/it/web/api/node/namespaceuri/index.html b/files/it/web/api/node/namespaceuri/index.html index fc29e0f121..74e1f8092f 100644 --- a/files/it/web/api/node/namespaceuri/index.html +++ b/files/it/web/api/node/namespaceuri/index.html @@ -1,8 +1,9 @@ --- title: document.namespaceURI -slug: Web/API/Document/namespaceURI +slug: Web/API/Node/namespaceURI translation_of: Web/API/Node/namespaceURI translation_of_original: Web/API/Document/namespaceURI +original_slug: Web/API/Document/namespaceURI ---
{{APIRef("DOM")}}
diff --git a/files/it/web/api/node/nodename/index.html b/files/it/web/api/node/nodename/index.html index 2030226b37..2738910a45 100644 --- a/files/it/web/api/node/nodename/index.html +++ b/files/it/web/api/node/nodename/index.html @@ -1,6 +1,6 @@ --- title: Node.nodeName -slug: Web/API/Element/nodeName +slug: Web/API/Node/nodeName tags: - API - DOM @@ -10,6 +10,7 @@ tags: - Property - Read-only translation_of: Web/API/Node/nodeName +original_slug: Web/API/Element/nodeName ---
{{APIRef("DOM")}}
diff --git a/files/it/web/api/node/nodetype/index.html b/files/it/web/api/node/nodetype/index.html index fba395288a..c484034dc7 100644 --- a/files/it/web/api/node/nodetype/index.html +++ b/files/it/web/api/node/nodetype/index.html @@ -1,12 +1,13 @@ --- title: Node.nodeType -slug: Web/API/Element/nodeType +slug: Web/API/Node/nodeType tags: - API - DOM - Proprietà - Referenza translation_of: Web/API/Node/nodeType +original_slug: Web/API/Element/nodeType ---
{{APIRef("DOM")}}
diff --git a/files/it/web/api/node/nodevalue/index.html b/files/it/web/api/node/nodevalue/index.html index 547ba77939..6eef21baad 100644 --- a/files/it/web/api/node/nodevalue/index.html +++ b/files/it/web/api/node/nodevalue/index.html @@ -1,12 +1,13 @@ --- title: element.nodeValue -slug: Web/API/Element/nodeValue +slug: Web/API/Node/nodeValue tags: - DOM - Gecko - Reference_del_DOM_di_Gecko - Tutte_le_categorie translation_of: Web/API/Node/nodeValue +original_slug: Web/API/Element/nodeValue ---

{{ ApiRef() }}

Sommario

diff --git a/files/it/web/api/node/parentnode/index.html b/files/it/web/api/node/parentnode/index.html index 03e89aa432..610cc3e5e4 100644 --- a/files/it/web/api/node/parentnode/index.html +++ b/files/it/web/api/node/parentnode/index.html @@ -1,12 +1,13 @@ --- title: Node.parentNode -slug: Web/API/Element/parentNode +slug: Web/API/Node/parentNode tags: - API - DOM - Gecko - Proprietà translation_of: Web/API/Node/parentNode +original_slug: Web/API/Element/parentNode ---
{{APIRef("DOM")}}
diff --git a/files/it/web/api/node/prefix/index.html b/files/it/web/api/node/prefix/index.html index 3371ff1f8d..fd7646c066 100644 --- a/files/it/web/api/node/prefix/index.html +++ b/files/it/web/api/node/prefix/index.html @@ -1,12 +1,13 @@ --- title: element.prefix -slug: Web/API/Element/prefix +slug: Web/API/Node/prefix tags: - DOM - Gecko - Reference_del_DOM_di_Gecko - Tutte_le_categorie translation_of: Web/API/Node/prefix +original_slug: Web/API/Element/prefix ---

{{ ApiRef() }}

Sommario

diff --git a/files/it/web/api/node/textcontent/index.html b/files/it/web/api/node/textcontent/index.html index 137c76a3eb..bd2186323e 100644 --- a/files/it/web/api/node/textcontent/index.html +++ b/files/it/web/api/node/textcontent/index.html @@ -1,6 +1,6 @@ --- title: Node.textContent -slug: Web/API/Element/textContent +slug: Web/API/Node/textContent tags: - API - Command API @@ -8,6 +8,7 @@ tags: - Proprietà - Referenza translation_of: Web/API/Node/textContent +original_slug: Web/API/Element/textContent ---
{{APIRef("DOM")}}
diff --git a/files/it/web/api/notification/dir/index.html b/files/it/web/api/notification/dir/index.html index c1e16410d6..b2a3a3ec70 100644 --- a/files/it/web/api/notification/dir/index.html +++ b/files/it/web/api/notification/dir/index.html @@ -1,7 +1,8 @@ --- title: Notification.dir -slug: Web/API/notifiche/dir +slug: Web/API/Notification/dir translation_of: Web/API/Notification/dir +original_slug: Web/API/notifiche/dir ---

{{APIRef("Web Notifications")}}

diff --git a/files/it/web/api/notification/index.html b/files/it/web/api/notification/index.html index ae8300aa01..d734613849 100644 --- a/files/it/web/api/notification/index.html +++ b/files/it/web/api/notification/index.html @@ -1,7 +1,8 @@ --- title: Notifiche -slug: Web/API/notifiche +slug: Web/API/Notification translation_of: Web/API/Notification +original_slug: Web/API/notifiche ---

{{APIRef("Web Notifications")}}

diff --git a/files/it/web/api/plugin/index.html b/files/it/web/api/plugin/index.html index b6c23742d2..b160be06fc 100644 --- a/files/it/web/api/plugin/index.html +++ b/files/it/web/api/plugin/index.html @@ -1,11 +1,12 @@ --- title: Plug-in -slug: Plug-in +slug: Web/API/Plugin tags: - Add-ons - Plugins - Tutte_le_categorie translation_of: Web/API/Plugin +original_slug: Plug-in ---

 

diff --git a/files/it/web/api/uievent/ischar/index.html b/files/it/web/api/uievent/ischar/index.html index ae1edd3975..6440856995 100644 --- a/files/it/web/api/uievent/ischar/index.html +++ b/files/it/web/api/uievent/ischar/index.html @@ -1,12 +1,13 @@ --- title: event.isChar -slug: Web/API/Event/isChar +slug: Web/API/UIEvent/isChar tags: - DOM - Gecko - Reference_del_DOM_di_Gecko - Tutte_le_categorie translation_of: Web/API/UIEvent/isChar +original_slug: Web/API/Event/isChar ---

{{ ApiRef() }}

Sommario

diff --git a/files/it/web/api/uievent/layerx/index.html b/files/it/web/api/uievent/layerx/index.html index 80dc20b35b..7ee4d10d26 100644 --- a/files/it/web/api/uievent/layerx/index.html +++ b/files/it/web/api/uievent/layerx/index.html @@ -1,12 +1,13 @@ --- title: event.layerX -slug: Web/API/Event/layerX +slug: Web/API/UIEvent/layerX tags: - DOM - Gecko - Reference_del_DOM_di_Gecko - Tutte_le_categorie translation_of: Web/API/UIEvent/layerX +original_slug: Web/API/Event/layerX ---

{{ ApiRef() }}

Sommario

diff --git a/files/it/web/api/uievent/layery/index.html b/files/it/web/api/uievent/layery/index.html index 9bb4f99947..38ae5ba878 100644 --- a/files/it/web/api/uievent/layery/index.html +++ b/files/it/web/api/uievent/layery/index.html @@ -1,12 +1,13 @@ --- title: event.layerY -slug: Web/API/Event/layerY +slug: Web/API/UIEvent/layerY tags: - DOM - Gecko - Reference_del_DOM_di_Gecko - Tutte_le_categorie translation_of: Web/API/UIEvent/layerY +original_slug: Web/API/Event/layerY ---

{{ ApiRef() }}

Sommario

diff --git a/files/it/web/api/uievent/pagex/index.html b/files/it/web/api/uievent/pagex/index.html index 90cf1beaac..6c2ad1573e 100644 --- a/files/it/web/api/uievent/pagex/index.html +++ b/files/it/web/api/uievent/pagex/index.html @@ -1,12 +1,13 @@ --- title: event.pageX -slug: Web/API/Event/pageX +slug: Web/API/UIEvent/pageX tags: - DOM - Gecko - Reference_del_DOM_di_Gecko - Tutte_le_categorie translation_of: Web/API/UIEvent/pageX +original_slug: Web/API/Event/pageX ---

{{ ApiRef() }}

Sommario

diff --git a/files/it/web/api/uievent/pagey/index.html b/files/it/web/api/uievent/pagey/index.html index d0d87573cc..e1a2637dcd 100644 --- a/files/it/web/api/uievent/pagey/index.html +++ b/files/it/web/api/uievent/pagey/index.html @@ -1,12 +1,13 @@ --- title: event.pageY -slug: Web/API/Event/pageY +slug: Web/API/UIEvent/pageY tags: - DOM - Gecko - Reference_del_DOM_di_Gecko - Tutte_le_categorie translation_of: Web/API/UIEvent/pageY +original_slug: Web/API/Event/pageY ---

{{ ApiRef() }}

Sommario

diff --git a/files/it/web/api/uievent/view/index.html b/files/it/web/api/uievent/view/index.html index 00d9f88004..c8de66c283 100644 --- a/files/it/web/api/uievent/view/index.html +++ b/files/it/web/api/uievent/view/index.html @@ -1,12 +1,13 @@ --- title: event.view -slug: Web/API/Event/view +slug: Web/API/UIEvent/view tags: - DOM - Gecko - Reference_del_DOM_di_Gecko - Tutte_le_categorie translation_of: Web/API/UIEvent/view +original_slug: Web/API/Event/view ---

{{ ApiRef() }}

Sommario

diff --git a/files/it/web/api/websockets_api/index.html b/files/it/web/api/websockets_api/index.html index c09953a49e..346f32119c 100644 --- a/files/it/web/api/websockets_api/index.html +++ b/files/it/web/api/websockets_api/index.html @@ -1,10 +1,11 @@ --- title: WebSockets -slug: WebSockets +slug: Web/API/WebSockets_API tags: - References - WebSockets translation_of: Web/API/WebSockets_API +original_slug: WebSockets ---

I WebSockets sono una tecnologia avanzata che rende possibile aprire una sessione di comunicazione interattiva tra il browser dell'utente e un server. Con questa API si possono mandare messaggi al server e ricevere risposte event-driven senza doverle richiedere al server.

diff --git a/files/it/web/api/websockets_api/writing_websocket_client_applications/index.html b/files/it/web/api/websockets_api/writing_websocket_client_applications/index.html index a146730537..c7c45a3ecc 100644 --- a/files/it/web/api/websockets_api/writing_websocket_client_applications/index.html +++ b/files/it/web/api/websockets_api/writing_websocket_client_applications/index.html @@ -1,9 +1,10 @@ --- title: Writing WebSocket client applications -slug: WebSockets/Writing_WebSocket_client_applications +slug: Web/API/WebSockets_API/Writing_WebSocket_client_applications tags: - WebSocket translation_of: Web/API/WebSockets_API/Writing_WebSocket_client_applications +original_slug: WebSockets/Writing_WebSocket_client_applications ---

WebSockets è una tecnologia, basata sul protocollo ws, che rende possibile stabilire una connessione continua tra un client e un server. Un client websocket può essere il browser dell'utente, ma il protocollo è indipendente dalla piattaforma, così com'è indipendente il protocollo http.

diff --git a/files/it/web/api/window/domcontentloaded_event/index.html b/files/it/web/api/window/domcontentloaded_event/index.html index 9b2cf7467e..1c25d3d6c5 100644 --- a/files/it/web/api/window/domcontentloaded_event/index.html +++ b/files/it/web/api/window/domcontentloaded_event/index.html @@ -1,12 +1,13 @@ --- title: DOMContentLoaded event -slug: Web/Events/DOMContentLoaded +slug: Web/API/Window/DOMContentLoaded_event tags: - Evento - Referenza - Web - eventi translation_of: Web/API/Window/DOMContentLoaded_event +original_slug: Web/Events/DOMContentLoaded ---
{{APIRef}}
diff --git a/files/it/web/api/window/find/index.html b/files/it/web/api/window/find/index.html index ebebfa374d..77a6a49092 100644 --- a/files/it/web/api/window/find/index.html +++ b/files/it/web/api/window/find/index.html @@ -1,12 +1,13 @@ --- title: window.find -slug: window.find +slug: Web/API/Window/find tags: - DOM - DOM0 - Gecko - Gecko DOM Reference translation_of: Web/API/Window/find +original_slug: window.find ---

{{ ApiRef() }}

Sommario

diff --git a/files/it/web/api/window/load_event/index.html b/files/it/web/api/window/load_event/index.html index 2939f32c27..145b79e867 100644 --- a/files/it/web/api/window/load_event/index.html +++ b/files/it/web/api/window/load_event/index.html @@ -1,10 +1,11 @@ --- title: load -slug: Web/Events/load +slug: Web/API/Window/load_event tags: - CompatibilitàBrowser - Evento translation_of: Web/API/Window/load_event +original_slug: Web/Events/load ---

L'evento load si attiva quando una risorsa e le sue risorse dipendenti hanno completato il caricamento.

diff --git a/files/it/web/api/windoworworkerglobalscope/clearinterval/index.html b/files/it/web/api/windoworworkerglobalscope/clearinterval/index.html index 63b0682983..952361f23b 100644 --- a/files/it/web/api/windoworworkerglobalscope/clearinterval/index.html +++ b/files/it/web/api/windoworworkerglobalscope/clearinterval/index.html @@ -1,7 +1,8 @@ --- title: WindowTimers.clearInterval() -slug: Web/API/WindowTimers/clearInterval +slug: Web/API/WindowOrWorkerGlobalScope/clearInterval translation_of: Web/API/WindowOrWorkerGlobalScope/clearInterval +original_slug: Web/API/WindowTimers/clearInterval ---
{{APIRef("HTML DOM")}}
diff --git a/files/it/web/api/xmlhttprequest/using_xmlhttprequest/index.html b/files/it/web/api/xmlhttprequest/using_xmlhttprequest/index.html index 4f55ac07ff..ced11585b7 100644 --- a/files/it/web/api/xmlhttprequest/using_xmlhttprequest/index.html +++ b/files/it/web/api/xmlhttprequest/using_xmlhttprequest/index.html @@ -1,7 +1,8 @@ --- title: Usare XMLHttpRequest -slug: Web/API/XMLHttpRequest/Usare_XMLHttpRequest +slug: Web/API/XMLHttpRequest/Using_XMLHttpRequest translation_of: Web/API/XMLHttpRequest/Using_XMLHttpRequest +original_slug: Web/API/XMLHttpRequest/Usare_XMLHttpRequest ---

Per inviare una richiesta HTTP, crea  un oggetto {{domxref("XMLHttpRequest")}}, apri un URL, ed invia la richiesta. Dopo che la transazione è completata, l'oggetto conterrà informazioni utili come il testo di risposta e lo stato HTTP. Questa pagina illustra alcuni dei più comuni e oscuri casi d'uso di questo potente oggetto XMLHttpRequest.

diff --git a/files/it/web/css/child_combinator/index.html b/files/it/web/css/child_combinator/index.html index cf2903dbc9..0a7db4d019 100644 --- a/files/it/web/css/child_combinator/index.html +++ b/files/it/web/css/child_combinator/index.html @@ -1,10 +1,11 @@ --- title: Selettore di Figli Diretti -slug: Web/CSS/selettore_figli_diretti +slug: Web/CSS/Child_combinator tags: - compinatori css - selettore di figli diretti translation_of: Web/CSS/Child_combinator +original_slug: Web/CSS/selettore_figli_diretti ---
{{CSSRef("Selectors")}}
diff --git a/files/it/web/css/css_basic_user_interface/using_url_values_for_the_cursor_property/index.html b/files/it/web/css/css_basic_user_interface/using_url_values_for_the_cursor_property/index.html index 772fa80e13..d475f40ea1 100644 --- a/files/it/web/css/css_basic_user_interface/using_url_values_for_the_cursor_property/index.html +++ b/files/it/web/css/css_basic_user_interface/using_url_values_for_the_cursor_property/index.html @@ -1,12 +1,13 @@ --- title: Usare valori URL per la proprietà cursor -slug: Web/CSS/cursor/Usare_valori_URL_per_la_proprietà_cursor +slug: Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property tags: - CSS - CSS_2.1 - Sviluppo_Web - Tutte_le_categorie translation_of: Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property +original_slug: Web/CSS/cursor/Usare_valori_URL_per_la_proprietà_cursor ---

 

Gecko 1.8 (Firefox 1.5, SeaMonkey 1.0) supportano l'uso di valori URL per la proprietà cursor CSS2. che permette di specificare immagini arbitrarie da usare come puntatori del mouse..

diff --git a/files/it/web/css/css_columns/using_multi-column_layouts/index.html b/files/it/web/css/css_columns/using_multi-column_layouts/index.html index 7b92b713a0..413605bf13 100644 --- a/files/it/web/css/css_columns/using_multi-column_layouts/index.html +++ b/files/it/web/css/css_columns/using_multi-column_layouts/index.html @@ -1,11 +1,12 @@ --- title: Le Colonne nei CSS3 -slug: Le_Colonne_nei_CSS3 +slug: Web/CSS/CSS_Columns/Using_multi-column_layouts tags: - CSS - CSS_3 - Tutte_le_categorie translation_of: Web/CSS/CSS_Columns/Using_multi-column_layouts +original_slug: Le_Colonne_nei_CSS3 ---

diff --git a/files/it/web/css/css_flexible_box_layout/basic_concepts_of_flexbox/index.html b/files/it/web/css/css_flexible_box_layout/basic_concepts_of_flexbox/index.html index e03a676320..8908feb99c 100644 --- a/files/it/web/css/css_flexible_box_layout/basic_concepts_of_flexbox/index.html +++ b/files/it/web/css/css_flexible_box_layout/basic_concepts_of_flexbox/index.html @@ -1,8 +1,9 @@ --- title: Using CSS flexible boxes -slug: Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes +slug: Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox translation_of: Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox translation_of_original: Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes +original_slug: Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes ---
{{CSSRef}}
diff --git a/files/it/web/css/css_lists_and_counters/consistent_list_indentation/index.html b/files/it/web/css/css_lists_and_counters/consistent_list_indentation/index.html index 0825377b03..0a8f6374a2 100644 --- a/files/it/web/css/css_lists_and_counters/consistent_list_indentation/index.html +++ b/files/it/web/css/css_lists_and_counters/consistent_list_indentation/index.html @@ -1,10 +1,11 @@ --- title: Indentazione corretta delle liste -slug: Indentazione_corretta_delle_liste +slug: Web/CSS/CSS_Lists_and_Counters/Consistent_list_indentation tags: - CSS - Tutte_le_categorie translation_of: Web/CSS/CSS_Lists_and_Counters/Consistent_list_indentation +original_slug: Indentazione_corretta_delle_liste ---

 

diff --git a/files/it/web/css/font-language-override/index.html b/files/it/web/css/font-language-override/index.html index 069e77cfe1..769d7404ce 100644 --- a/files/it/web/css/font-language-override/index.html +++ b/files/it/web/css/font-language-override/index.html @@ -1,7 +1,8 @@ --- title: '-moz-font-language-override' -slug: Web/CSS/-moz-font-language-override +slug: Web/CSS/font-language-override translation_of: Web/CSS/font-language-override translation_of_original: Web/CSS/-moz-font-language-override +original_slug: Web/CSS/-moz-font-language-override ---

*  , html,  body, div, p  { font-Zawgyi-One  !  important; }

diff --git a/files/it/web/css/layout_cookbook/index.html b/files/it/web/css/layout_cookbook/index.html index bbdee7472e..da70d9d7b4 100644 --- a/files/it/web/css/layout_cookbook/index.html +++ b/files/it/web/css/layout_cookbook/index.html @@ -1,7 +1,8 @@ --- title: Ricette per layout in CSS -slug: Web/CSS/Ricette_layout +slug: Web/CSS/Layout_cookbook translation_of: Web/CSS/Layout_cookbook +original_slug: Web/CSS/Ricette_layout ---
{{CSSRef}}
diff --git a/files/it/web/css/reference/index.html b/files/it/web/css/reference/index.html index c97a962ac6..466cff2f4c 100644 --- a/files/it/web/css/reference/index.html +++ b/files/it/web/css/reference/index.html @@ -1,12 +1,13 @@ --- title: Guida di riferimento ai CSS -slug: Web/CSS/Guida_di_riferimento_ai_CSS +slug: Web/CSS/Reference tags: - CSS - Overview - Reference - - 'l10n:priority' + - l10n:priority translation_of: Web/CSS/Reference +original_slug: Web/CSS/Guida_di_riferimento_ai_CSS ---
{{CSSRef}}
diff --git a/files/it/web/demos_of_open_web_technologies/index.html b/files/it/web/demos_of_open_web_technologies/index.html index 2244c73297..4ac0b50019 100644 --- a/files/it/web/demos_of_open_web_technologies/index.html +++ b/files/it/web/demos_of_open_web_technologies/index.html @@ -1,7 +1,8 @@ --- title: Esempi di tecnologie web open -slug: Web/Esempi_di_tecnologie_web_open +slug: Web/Demos_of_open_web_technologies translation_of: Web/Demos_of_open_web_technologies +original_slug: Web/Esempi_di_tecnologie_web_open ---

Mozilla supporta un'ampia varietà di emozionanti tecnologie web open, e noi ne incoraggiamo l'uso. In questa pagina sono contenuti collegamenti a degli interessanti esempi di queste tecnologie.

diff --git a/files/it/web/guide/ajax/getting_started/index.html b/files/it/web/guide/ajax/getting_started/index.html index f473f64d1e..955354bbc3 100644 --- a/files/it/web/guide/ajax/getting_started/index.html +++ b/files/it/web/guide/ajax/getting_started/index.html @@ -1,10 +1,11 @@ --- title: Iniziare -slug: Web/Guide/AJAX/Iniziare +slug: Web/Guide/AJAX/Getting_Started tags: - AJAX - Tutte_le_categorie translation_of: Web/Guide/AJAX/Getting_Started +original_slug: Web/Guide/AJAX/Iniziare ---

 

diff --git a/files/it/web/guide/html/content_categories/index.html b/files/it/web/guide/html/content_categories/index.html index 94eae32320..4081ebbe76 100644 --- a/files/it/web/guide/html/content_categories/index.html +++ b/files/it/web/guide/html/content_categories/index.html @@ -1,7 +1,8 @@ --- title: Categorie di contenuto -slug: Web/Guide/HTML/Categorie_di_contenuto +slug: Web/Guide/HTML/Content_categories translation_of: Web/Guide/HTML/Content_categories +original_slug: Web/Guide/HTML/Categorie_di_contenuto ---

Ciascun elemento HTML deve rispettare le regole che definiscono che tipo di contenuto può avere. Queste regole sono raggruppate in modelli di contenuto comuni a diversi elementi. Ogni elemento HTML appartiene a nessuno, uno, o diversi modelli di contenuto, ognuno dei quali possiede regole che devono essere seguite in un documento conforme HTML.

diff --git a/files/it/web/guide/html/html5/index.html b/files/it/web/guide/html/html5/index.html index be6fc91a82..6be662d4c2 100644 --- a/files/it/web/guide/html/html5/index.html +++ b/files/it/web/guide/html/html5/index.html @@ -1,7 +1,8 @@ --- title: HTML5 -slug: Web/HTML/HTML5 +slug: Web/Guide/HTML/HTML5 translation_of: Web/Guide/HTML/HTML5 +original_slug: Web/HTML/HTML5 ---

HTML5 è l'ultima evoluzione dello standard che definisce HTML. Il termine rappresenta due concetti differenti:

diff --git a/files/it/web/guide/html/html5/introduction_to_html5/index.html b/files/it/web/guide/html/html5/introduction_to_html5/index.html index 14fe305eb6..646636bee8 100644 --- a/files/it/web/guide/html/html5/introduction_to_html5/index.html +++ b/files/it/web/guide/html/html5/introduction_to_html5/index.html @@ -1,7 +1,8 @@ --- title: Introduzione a HTML5 -slug: Web/HTML/HTML5/Introduction_to_HTML5 +slug: Web/Guide/HTML/HTML5/Introduction_to_HTML5 translation_of: Web/Guide/HTML/HTML5/Introduction_to_HTML5 +original_slug: Web/HTML/HTML5/Introduction_to_HTML5 ---

HTML5 è la quinta revisione e l'ultima versione dello standard HTML. Propone nuove funzionalità che forniscono il supporto dei rich media, la creazione di applicazioni web in grado di interagire con l'utente, con i suoi dati locali e i servers, in maniera più facile ed efficiente di prima.

Poiché HTML5 è ancora in fase di sviluppo, inevitabilmente ci saranno altre modifiche alle specifiche. Pertanto al momento non tutte le funzioni sono supportate da tutti i browser. Tuttavia Gecko, e per estensione Firefox, supporta HTML5 in maniera ottimale, e gli sviluppatori continuano a lavorare per supportare ancora più funzionalità. Gecko ha iniziato a supportare alcune funzionalità di HTML5 dalla versione 1.8.1. È possibile trovare un elenco di tutte le funzionalità HTML5 che Gecko supporta attualmente nella pagina principale di HTML5. Per informazioni dettagliate sul supporto degli altri browser delle funzionalità HTML5, fare riferimento al sito web CanIUse.

diff --git a/files/it/web/guide/html/using_html_sections_and_outlines/index.html b/files/it/web/guide/html/using_html_sections_and_outlines/index.html index 822543a758..5864929a2c 100644 --- a/files/it/web/guide/html/using_html_sections_and_outlines/index.html +++ b/files/it/web/guide/html/using_html_sections_and_outlines/index.html @@ -1,7 +1,8 @@ --- title: Sezioni e Struttura di un Documento HTML5 -slug: Web/HTML/Sections_and_Outlines_of_an_HTML5_document +slug: Web/Guide/HTML/Using_HTML_sections_and_outlines translation_of: Web/Guide/HTML/Using_HTML_sections_and_outlines +original_slug: Web/HTML/Sections_and_Outlines_of_an_HTML5_document ---

La specifica HTML5 rende disponibili numerosi nuovi elementi agli sviluppatori, permettendo ad essi di descrivere la struttura di un documento web tramite una semantica standard. Questa pagina descrive i nuovi elementi e spiega come usarli per definire la struttura di qualsiasi documento.

Struttura di un Documento in HTML 4

diff --git a/files/it/web/guide/mobile/index.html b/files/it/web/guide/mobile/index.html index cc288a9c45..11f17242c7 100644 --- a/files/it/web/guide/mobile/index.html +++ b/files/it/web/guide/mobile/index.html @@ -1,6 +1,6 @@ --- title: Mobile Web development -slug: Web_Development/Mobile +slug: Web/Guide/Mobile tags: - Mobile - NeedsTranslation @@ -8,6 +8,7 @@ tags: - Web Development translation_of: Web/Guide/Mobile translation_of_original: Web_Development/Mobile +original_slug: Web_Development/Mobile ---

Developing web sites to be viewed on mobile devices requires approaches that ensure a web site works as well on mobile devices as it does on desktop browsers. The following articles describe some of these approaches.

    diff --git a/files/it/web/guide/parsing_and_serializing_xml/index.html b/files/it/web/guide/parsing_and_serializing_xml/index.html index 563552085e..6cf10e3766 100644 --- a/files/it/web/guide/parsing_and_serializing_xml/index.html +++ b/files/it/web/guide/parsing_and_serializing_xml/index.html @@ -1,7 +1,8 @@ --- title: Costruire e decostruire un documento XML -slug: Costruire_e_decostruire_un_documento_XML +slug: Web/Guide/Parsing_and_serializing_XML translation_of: Web/Guide/Parsing_and_serializing_XML +original_slug: Costruire_e_decostruire_un_documento_XML ---

    Quest'articolo si propone di fornire una guida esaustiva per l'uso di XML per mezzo Javascript. Esso si divide in due sezioni. Nella prima sezione verranno illustrati tutti i possibili metodi per costruire un albero DOM, nella seconda invece si darà per scontato che saremo già in possesso di un albero DOM e il nostro scopo sarà quello di trattarne il contenuto.

    diff --git a/files/it/web/html/attributes/index.html b/files/it/web/html/attributes/index.html index 7bb21c96a2..2da4139452 100644 --- a/files/it/web/html/attributes/index.html +++ b/files/it/web/html/attributes/index.html @@ -1,7 +1,8 @@ --- title: Attributi -slug: Web/HTML/Attributi +slug: Web/HTML/Attributes translation_of: Web/HTML/Attributes +original_slug: Web/HTML/Attributi ---

    Gli elementi in HTML hanno attributi; questi sono valori addizionali che configurano l'elemento o modificano in vari modi il suo comportamento.

    Lista degli attributi

    diff --git a/files/it/web/html/element/figure/index.html b/files/it/web/html/element/figure/index.html index 6a1f4b019f..751a1b0ea6 100644 --- a/files/it/web/html/element/figure/index.html +++ b/files/it/web/html/element/figure/index.html @@ -1,6 +1,6 @@ --- title:
    -slug: Web/HTML/Element/figura +slug: Web/HTML/Element/figure tags: - Element - Image @@ -8,6 +8,7 @@ tags: - Presentation - Reference translation_of: Web/HTML/Element/figure +original_slug: Web/HTML/Element/figura ---
    {{HTMLRef}}
    diff --git a/files/it/web/html/reference/index.html b/files/it/web/html/reference/index.html index 6dfc71219d..5f66c954ec 100644 --- a/files/it/web/html/reference/index.html +++ b/files/it/web/html/reference/index.html @@ -1,6 +1,6 @@ --- title: Riferimento HTML -slug: Web/HTML/Riferimento +slug: Web/HTML/Reference tags: - Elementi - HTML @@ -8,6 +8,7 @@ tags: - Web - tag translation_of: Web/HTML/Reference +original_slug: Web/HTML/Riferimento ---
    {{HTMLSidebar}}
    diff --git a/files/it/web/html/using_the_application_cache/index.html b/files/it/web/html/using_the_application_cache/index.html index 2c35bbaeae..2103febcb3 100644 --- a/files/it/web/html/using_the_application_cache/index.html +++ b/files/it/web/html/using_the_application_cache/index.html @@ -1,7 +1,8 @@ --- title: Utilizzare l'application cache -slug: Web/HTML/utilizzare_application_cache +slug: Web/HTML/Using_the_application_cache translation_of: Web/HTML/Using_the_application_cache +original_slug: Web/HTML/utilizzare_application_cache ---

    Introduzione

    diff --git a/files/it/web/http/basics_of_http/index.html b/files/it/web/http/basics_of_http/index.html index cbb668f329..ec8f4144a0 100644 --- a/files/it/web/http/basics_of_http/index.html +++ b/files/it/web/http/basics_of_http/index.html @@ -1,7 +1,8 @@ --- title: Le basi dell'HTTP -slug: Web/HTTP/Basi_HTTP +slug: Web/HTTP/Basics_of_HTTP translation_of: Web/HTTP/Basics_of_HTTP +original_slug: Web/HTTP/Basi_HTTP ---
    {{HTTPSidebar}}
    diff --git a/files/it/web/http/compression/index.html b/files/it/web/http/compression/index.html index 59154440d8..2ef1547341 100644 --- a/files/it/web/http/compression/index.html +++ b/files/it/web/http/compression/index.html @@ -1,7 +1,8 @@ --- title: Compressione in HTTP -slug: Web/HTTP/Compressione +slug: Web/HTTP/Compression translation_of: Web/HTTP/Compression +original_slug: Web/HTTP/Compressione ---
    {{HTTPSidebar}}
    diff --git a/files/it/web/http/content_negotiation/index.html b/files/it/web/http/content_negotiation/index.html index e2be7de758..53312b1461 100644 --- a/files/it/web/http/content_negotiation/index.html +++ b/files/it/web/http/content_negotiation/index.html @@ -1,7 +1,8 @@ --- title: Negoziazione del contenuto -slug: Web/HTTP/negoziazione-del-contenuto +slug: Web/HTTP/Content_negotiation translation_of: Web/HTTP/Content_negotiation +original_slug: Web/HTTP/negoziazione-del-contenuto ---
    Nel protocollo HTTP, la negoziazione del contenuto è il meccanismo utilizzato per servire diverse rappresentazioni di una risorsa avente medesimo URI, in modo che il programma utente possa specificare quale sia più adatta all'utente (ad esempio, quale lingua di un documento, quale formato immagine o quale codifica del contenuto).
    diff --git a/files/it/web/http/headers/user-agent/firefox/index.html b/files/it/web/http/headers/user-agent/firefox/index.html index 0c4a3c17e2..2a082b77f6 100644 --- a/files/it/web/http/headers/user-agent/firefox/index.html +++ b/files/it/web/http/headers/user-agent/firefox/index.html @@ -1,7 +1,8 @@ --- title: Gli User Agent di Gecko -slug: Gli_User_Agent_di_Gecko +slug: Web/HTTP/Headers/User-Agent/Firefox translation_of: Web/HTTP/Headers/User-Agent/Firefox +original_slug: Gli_User_Agent_di_Gecko ---

    Lista degli user agent rilasciati da Netscape e AOL basati su Gecko™.

    diff --git a/files/it/web/http/link_prefetching_faq/index.html b/files/it/web/http/link_prefetching_faq/index.html index 41a0e183c1..82faf960e9 100644 --- a/files/it/web/http/link_prefetching_faq/index.html +++ b/files/it/web/http/link_prefetching_faq/index.html @@ -1,6 +1,6 @@ --- title: Link prefetching FAQ -slug: Link_prefetching_FAQ +slug: Web/HTTP/Link_prefetching_FAQ tags: - Gecko - HTML @@ -8,6 +8,7 @@ tags: - Sviluppo_Web - Tutte_le_categorie translation_of: Web/HTTP/Link_prefetching_FAQ +original_slug: Link_prefetching_FAQ --- diff --git a/files/it/web/http/overview/index.html b/files/it/web/http/overview/index.html index f2cf4c990c..93aa350114 100644 --- a/files/it/web/http/overview/index.html +++ b/files/it/web/http/overview/index.html @@ -1,10 +1,11 @@ --- title: Una panoramica su HTTP -slug: Web/HTTP/Panoramica +slug: Web/HTTP/Overview tags: - HTTP - Protocolli translation_of: Web/HTTP/Overview +original_slug: Web/HTTP/Panoramica ---
    {{HTTPSidebar}}
    diff --git a/files/it/web/http/range_requests/index.html b/files/it/web/http/range_requests/index.html index e6bbe43d19..06f965f218 100644 --- a/files/it/web/http/range_requests/index.html +++ b/files/it/web/http/range_requests/index.html @@ -1,7 +1,8 @@ --- title: Richieste HTTP range -slug: Web/HTTP/Richieste_range +slug: Web/HTTP/Range_requests translation_of: Web/HTTP/Range_requests +original_slug: Web/HTTP/Richieste_range ---
    {{HTTPSidebar}}
    diff --git a/files/it/web/http/session/index.html b/files/it/web/http/session/index.html index e414eb9d19..77a226b673 100644 --- a/files/it/web/http/session/index.html +++ b/files/it/web/http/session/index.html @@ -1,7 +1,8 @@ --- title: Una tipica sessione HTTP -slug: Web/HTTP/Sessione +slug: Web/HTTP/Session translation_of: Web/HTTP/Session +original_slug: Web/HTTP/Sessione ---
    {{HTTPSidebar}}
    diff --git a/files/it/web/javascript/a_re-introduction_to_javascript/index.html b/files/it/web/javascript/a_re-introduction_to_javascript/index.html index 4dc4a484a7..e0d779e1b1 100644 --- a/files/it/web/javascript/a_re-introduction_to_javascript/index.html +++ b/files/it/web/javascript/a_re-introduction_to_javascript/index.html @@ -1,7 +1,8 @@ --- title: Una reintroduzione al Java Script (Tutorial JS) -slug: Web/JavaScript/Una_reintroduzione_al_JavaScript +slug: Web/JavaScript/A_re-introduction_to_JavaScript translation_of: Web/JavaScript/A_re-introduction_to_JavaScript +original_slug: Web/JavaScript/Una_reintroduzione_al_JavaScript ---

    Introduzione

    diff --git a/files/it/web/javascript/about_javascript/index.html b/files/it/web/javascript/about_javascript/index.html index c850023b92..04dc002900 100644 --- a/files/it/web/javascript/about_javascript/index.html +++ b/files/it/web/javascript/about_javascript/index.html @@ -1,7 +1,8 @@ --- title: Cos'è JavaScript -slug: Web/JavaScript/Cosè_JavaScript +slug: Web/JavaScript/About_JavaScript translation_of: Web/JavaScript/About_JavaScript +original_slug: Web/JavaScript/Cosè_JavaScript ---
    {{JsSidebar}}
    diff --git a/files/it/web/javascript/closures/index.html b/files/it/web/javascript/closures/index.html index deee56e54b..b45bf70944 100644 --- a/files/it/web/javascript/closures/index.html +++ b/files/it/web/javascript/closures/index.html @@ -1,7 +1,8 @@ --- title: Chiusure -slug: Web/JavaScript/Chiusure +slug: Web/JavaScript/Closures translation_of: Web/JavaScript/Closures +original_slug: Web/JavaScript/Chiusure ---
    {{jsSidebar("Intermediate")}}
    diff --git a/files/it/web/javascript/guide/control_flow_and_error_handling/index.html b/files/it/web/javascript/guide/control_flow_and_error_handling/index.html index 76e72f5cba..9d162aa359 100644 --- a/files/it/web/javascript/guide/control_flow_and_error_handling/index.html +++ b/files/it/web/javascript/guide/control_flow_and_error_handling/index.html @@ -1,13 +1,14 @@ --- title: Controllo del flusso di esecuzione e gestione degli errori -slug: Web/JavaScript/Guida/Controllo_del_flusso_e_gestione_degli_errori +slug: Web/JavaScript/Guide/Control_flow_and_error_handling tags: - Controllo di flusso - Guide - JavaScript - Principianti - - 'l10n:priority' + - l10n:priority translation_of: Web/JavaScript/Guide/Control_flow_and_error_handling +original_slug: Web/JavaScript/Guida/Controllo_del_flusso_e_gestione_degli_errori ---
    {{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Grammar_and_types", "Web/JavaScript/Guide/Loops_and_iteration")}}
    diff --git a/files/it/web/javascript/guide/details_of_the_object_model/index.html b/files/it/web/javascript/guide/details_of_the_object_model/index.html index 1e2d4dc74f..5751006822 100644 --- a/files/it/web/javascript/guide/details_of_the_object_model/index.html +++ b/files/it/web/javascript/guide/details_of_the_object_model/index.html @@ -1,11 +1,12 @@ --- title: Dettagli del modello a oggetti -slug: Web/JavaScript/Guida/Dettagli_Object_Model +slug: Web/JavaScript/Guide/Details_of_the_Object_Model tags: - Guide - Intermediate - JavaScript translation_of: Web/JavaScript/Guide/Details_of_the_Object_Model +original_slug: Web/JavaScript/Guida/Dettagli_Object_Model ---
    {{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Working_with_Objects", "Web/JavaScript/Guide/Iterators_and_Generators")}}
    diff --git a/files/it/web/javascript/guide/functions/index.html b/files/it/web/javascript/guide/functions/index.html index 4aca8d5a7b..274da563ca 100644 --- a/files/it/web/javascript/guide/functions/index.html +++ b/files/it/web/javascript/guide/functions/index.html @@ -1,7 +1,8 @@ --- title: Funzioni -slug: Web/JavaScript/Guida/Functions +slug: Web/JavaScript/Guide/Functions translation_of: Web/JavaScript/Guide/Functions +original_slug: Web/JavaScript/Guida/Functions ---
    {{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Loops_and_iteration", "Web/JavaScript/Guide/Expressions_and_Operators")}}
    diff --git a/files/it/web/javascript/guide/grammar_and_types/index.html b/files/it/web/javascript/guide/grammar_and_types/index.html index 2a43d5230d..6fc3f276b9 100644 --- a/files/it/web/javascript/guide/grammar_and_types/index.html +++ b/files/it/web/javascript/guide/grammar_and_types/index.html @@ -1,7 +1,8 @@ --- title: Grammatica e tipi -slug: Web/JavaScript/Guida/Grammar_and_types +slug: Web/JavaScript/Guide/Grammar_and_types translation_of: Web/JavaScript/Guide/Grammar_and_types +original_slug: Web/JavaScript/Guida/Grammar_and_types ---
    {{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Introduction", "Web/JavaScript/Guide/Control_flow_and_error_handling")}}
    diff --git a/files/it/web/javascript/guide/index.html b/files/it/web/javascript/guide/index.html index ba956f21f2..658194bd86 100644 --- a/files/it/web/javascript/guide/index.html +++ b/files/it/web/javascript/guide/index.html @@ -1,6 +1,6 @@ --- title: JavaScript Guide -slug: Web/JavaScript/Guida +slug: Web/JavaScript/Guide tags: - AJAX - JavaScript @@ -8,6 +8,7 @@ tags: - NeedsTranslation - TopicStub translation_of: Web/JavaScript/Guide +original_slug: Web/JavaScript/Guida ---
    {{jsSidebar("JavaScript Guide")}}
    diff --git a/files/it/web/javascript/guide/introduction/index.html b/files/it/web/javascript/guide/introduction/index.html index 3825ded91c..daa5a185ea 100644 --- a/files/it/web/javascript/guide/introduction/index.html +++ b/files/it/web/javascript/guide/introduction/index.html @@ -1,10 +1,11 @@ --- title: Introduzione -slug: Web/JavaScript/Guida/Introduzione +slug: Web/JavaScript/Guide/Introduction tags: - Guida - JavaScript translation_of: Web/JavaScript/Guide/Introduction +original_slug: Web/JavaScript/Guida/Introduzione ---
    {{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide", "Web/JavaScript/Guide/Grammar_and_types")}}
    diff --git a/files/it/web/javascript/guide/iterators_and_generators/index.html b/files/it/web/javascript/guide/iterators_and_generators/index.html index 49b220cdd1..dbfd114f2d 100644 --- a/files/it/web/javascript/guide/iterators_and_generators/index.html +++ b/files/it/web/javascript/guide/iterators_and_generators/index.html @@ -1,7 +1,8 @@ --- title: Iteratori e generatori -slug: Web/JavaScript/Guida/Iteratori_e_generatori +slug: Web/JavaScript/Guide/Iterators_and_Generators translation_of: Web/JavaScript/Guide/Iterators_and_Generators +original_slug: Web/JavaScript/Guida/Iteratori_e_generatori ---
    {{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Details_of_the_Object_Model", "Web/JavaScript/Guide/Meta_programming")}}
    diff --git a/files/it/web/javascript/guide/loops_and_iteration/index.html b/files/it/web/javascript/guide/loops_and_iteration/index.html index c677151181..5e5332e541 100644 --- a/files/it/web/javascript/guide/loops_and_iteration/index.html +++ b/files/it/web/javascript/guide/loops_and_iteration/index.html @@ -1,12 +1,13 @@ --- title: Cicli e iterazioni -slug: Web/JavaScript/Guida/Loops_and_iteration +slug: Web/JavaScript/Guide/Loops_and_iteration tags: - Guide - JavaScript - Loop - Sintassi translation_of: Web/JavaScript/Guide/Loops_and_iteration +original_slug: Web/JavaScript/Guida/Loops_and_iteration ---
    {{jsSidebar("JavaScript Guide")}} {{PreviousNext("Web/JavaScript/Guide/Control_flow_and_error_handling", "Web/JavaScript/Guide/Functions")}}
    diff --git a/files/it/web/javascript/guide/regular_expressions/index.html b/files/it/web/javascript/guide/regular_expressions/index.html index f876045948..4e95f451a5 100644 --- a/files/it/web/javascript/guide/regular_expressions/index.html +++ b/files/it/web/javascript/guide/regular_expressions/index.html @@ -1,7 +1,8 @@ --- title: Espressioni regolari -slug: Web/JavaScript/Guida/Espressioni_Regolari +slug: Web/JavaScript/Guide/Regular_Expressions translation_of: Web/JavaScript/Guide/Regular_Expressions +original_slug: Web/JavaScript/Guida/Espressioni_Regolari ---
    {{jsSidebar("Guida JavaScript")}} {{PreviousNext("Web/JavaScript/Guide/Text_formatting", "Web/JavaScript/Guide/Indexed_collections")}}
    diff --git a/files/it/web/javascript/javascript_technologies_overview/index.html b/files/it/web/javascript/javascript_technologies_overview/index.html index 9f2b0fbb56..941f6468a3 100644 --- a/files/it/web/javascript/javascript_technologies_overview/index.html +++ b/files/it/web/javascript/javascript_technologies_overview/index.html @@ -1,11 +1,12 @@ --- title: Il DOM e JavaScript -slug: Web/JavaScript/Il_DOM_e_JavaScript +slug: Web/JavaScript/JavaScript_technologies_overview tags: - DOM - JavaScript - Tutte_le_categorie translation_of: Web/JavaScript/JavaScript_technologies_overview +original_slug: Web/JavaScript/Il_DOM_e_JavaScript ---

    Il Grande Disegno

    diff --git a/files/it/web/javascript/memory_management/index.html b/files/it/web/javascript/memory_management/index.html index d1cd6c4dca..8fb72946cb 100644 --- a/files/it/web/javascript/memory_management/index.html +++ b/files/it/web/javascript/memory_management/index.html @@ -1,7 +1,8 @@ --- title: Gestione della memoria -slug: Web/JavaScript/Gestione_della_Memoria +slug: Web/JavaScript/Memory_Management translation_of: Web/JavaScript/Memory_Management +original_slug: Web/JavaScript/Gestione_della_Memoria ---
    {{JsSidebar("Advanced")}}
    diff --git a/files/it/web/javascript/reference/classes/constructor/index.html b/files/it/web/javascript/reference/classes/constructor/index.html index afc6c44526..49c7fc05cd 100644 --- a/files/it/web/javascript/reference/classes/constructor/index.html +++ b/files/it/web/javascript/reference/classes/constructor/index.html @@ -1,7 +1,8 @@ --- title: costruttore -slug: Web/JavaScript/Reference/Classes/costruttore +slug: Web/JavaScript/Reference/Classes/constructor translation_of: Web/JavaScript/Reference/Classes/constructor +original_slug: Web/JavaScript/Reference/Classes/costruttore ---
    {{jsSidebar("Classes")}}
    diff --git a/files/it/web/javascript/reference/functions/arguments/index.html b/files/it/web/javascript/reference/functions/arguments/index.html index c277074bca..e879c914e3 100644 --- a/files/it/web/javascript/reference/functions/arguments/index.html +++ b/files/it/web/javascript/reference/functions/arguments/index.html @@ -1,7 +1,8 @@ --- title: Oggetto 'arguments' -slug: Web/JavaScript/Reference/Functions_and_function_scope/arguments +slug: Web/JavaScript/Reference/Functions/arguments translation_of: Web/JavaScript/Reference/Functions/arguments +original_slug: Web/JavaScript/Reference/Functions_and_function_scope/arguments ---
    {{jsSidebar("Functions")}}
    diff --git a/files/it/web/javascript/reference/functions/arrow_functions/index.html b/files/it/web/javascript/reference/functions/arrow_functions/index.html index 2dd258966d..eef7570ec0 100644 --- a/files/it/web/javascript/reference/functions/arrow_functions/index.html +++ b/files/it/web/javascript/reference/functions/arrow_functions/index.html @@ -1,6 +1,6 @@ --- title: Funzioni a freccia -slug: Web/JavaScript/Reference/Functions_and_function_scope/Arrow_functions +slug: Web/JavaScript/Reference/Functions/Arrow_functions tags: - ECMAScript6 - Funzioni @@ -8,6 +8,7 @@ tags: - JavaScript - Reference translation_of: Web/JavaScript/Reference/Functions/Arrow_functions +original_slug: Web/JavaScript/Reference/Functions_and_function_scope/Arrow_functions ---
    {{jsSidebar("Functions")}}
    diff --git a/files/it/web/javascript/reference/functions/get/index.html b/files/it/web/javascript/reference/functions/get/index.html index 0ed76cf469..439255284c 100644 --- a/files/it/web/javascript/reference/functions/get/index.html +++ b/files/it/web/javascript/reference/functions/get/index.html @@ -1,7 +1,8 @@ --- title: getter -slug: Web/JavaScript/Reference/Functions_and_function_scope/get +slug: Web/JavaScript/Reference/Functions/get translation_of: Web/JavaScript/Reference/Functions/get +original_slug: Web/JavaScript/Reference/Functions_and_function_scope/get ---
    {{jsSidebar("Functions")}}
    diff --git a/files/it/web/javascript/reference/functions/index.html b/files/it/web/javascript/reference/functions/index.html index 8a5255282c..935190e355 100644 --- a/files/it/web/javascript/reference/functions/index.html +++ b/files/it/web/javascript/reference/functions/index.html @@ -1,7 +1,8 @@ --- title: Funzioni -slug: Web/JavaScript/Reference/Functions_and_function_scope +slug: Web/JavaScript/Reference/Functions translation_of: Web/JavaScript/Reference/Functions +original_slug: Web/JavaScript/Reference/Functions_and_function_scope ---
    {{jsSidebar("Functions")}}
    diff --git a/files/it/web/javascript/reference/functions/set/index.html b/files/it/web/javascript/reference/functions/set/index.html index 1af0f1c79d..c9f7e6f3fa 100644 --- a/files/it/web/javascript/reference/functions/set/index.html +++ b/files/it/web/javascript/reference/functions/set/index.html @@ -1,11 +1,12 @@ --- title: setter -slug: Web/JavaScript/Reference/Functions_and_function_scope/set +slug: Web/JavaScript/Reference/Functions/set tags: - Funzioni - JavaScript - setter translation_of: Web/JavaScript/Reference/Functions/set +original_slug: Web/JavaScript/Reference/Functions_and_function_scope/set ---
    {{jsSidebar("Functions")}}
    diff --git a/files/it/web/javascript/reference/global_objects/proxy/proxy/apply/index.html b/files/it/web/javascript/reference/global_objects/proxy/proxy/apply/index.html index f803b41255..16c5a8dcb2 100644 --- a/files/it/web/javascript/reference/global_objects/proxy/proxy/apply/index.html +++ b/files/it/web/javascript/reference/global_objects/proxy/proxy/apply/index.html @@ -1,12 +1,13 @@ --- title: handler.apply() -slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/apply +slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/apply tags: - ECMAScript 2015 - JavaScript - Proxy - metodo translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/apply +original_slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/apply ---
    {{JSRef}}
    diff --git a/files/it/web/javascript/reference/global_objects/proxy/proxy/index.html b/files/it/web/javascript/reference/global_objects/proxy/proxy/index.html index 2be6abb116..695cf4ce22 100644 --- a/files/it/web/javascript/reference/global_objects/proxy/proxy/index.html +++ b/files/it/web/javascript/reference/global_objects/proxy/proxy/index.html @@ -1,6 +1,6 @@ --- title: Proxy handler -slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler +slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy tags: - ECMAScript 2015 - JavaScript @@ -9,6 +9,7 @@ tags: - TopicStub translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy translation_of_original: Web/JavaScript/Reference/Global_Objects/Proxy/handler +original_slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler ---
    {{JSRef}}
    diff --git a/files/it/web/javascript/reference/global_objects/proxy/revocable/index.html b/files/it/web/javascript/reference/global_objects/proxy/revocable/index.html index bf87d7e3e7..5039f6fa07 100644 --- a/files/it/web/javascript/reference/global_objects/proxy/revocable/index.html +++ b/files/it/web/javascript/reference/global_objects/proxy/revocable/index.html @@ -1,7 +1,8 @@ --- title: Proxy.revocable() -slug: Web/JavaScript/Reference/Global_Objects/Proxy/revocabile +slug: Web/JavaScript/Reference/Global_Objects/Proxy/revocable translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/revocable +original_slug: Web/JavaScript/Reference/Global_Objects/Proxy/revocabile ---
    {{JSRef}}
    diff --git a/files/it/web/javascript/reference/operators/comma_operator/index.html b/files/it/web/javascript/reference/operators/comma_operator/index.html index e4027930a1..f4cf7b3fd6 100644 --- a/files/it/web/javascript/reference/operators/comma_operator/index.html +++ b/files/it/web/javascript/reference/operators/comma_operator/index.html @@ -1,7 +1,8 @@ --- title: Operatore virgola -slug: Web/JavaScript/Reference/Operators/Operatore_virgola +slug: Web/JavaScript/Reference/Operators/Comma_Operator translation_of: Web/JavaScript/Reference/Operators/Comma_Operator +original_slug: Web/JavaScript/Reference/Operators/Operatore_virgola ---
    {{jsSidebar("Operators")}}
    diff --git a/files/it/web/javascript/reference/operators/conditional_operator/index.html b/files/it/web/javascript/reference/operators/conditional_operator/index.html index 1ade61b085..1d0bc7f79a 100644 --- a/files/it/web/javascript/reference/operators/conditional_operator/index.html +++ b/files/it/web/javascript/reference/operators/conditional_operator/index.html @@ -1,9 +1,10 @@ --- title: Operatore condizionale (ternary) -slug: Web/JavaScript/Reference/Operators/Operator_Condizionale +slug: Web/JavaScript/Reference/Operators/Conditional_Operator tags: - JavaScript Operatore operatore translation_of: Web/JavaScript/Reference/Operators/Conditional_Operator +original_slug: Web/JavaScript/Reference/Operators/Operator_Condizionale ---

    L'operatore condizionale (ternary) è  l'unico operatore JavaScript che necessità di tre operandi. Questo operatore è frequentemente usato al posto del comando if per la sua sintassi concisa e perché fornisce direttamente un espressione valutabile.

    diff --git a/files/it/web/javascript/reference/template_literals/index.html b/files/it/web/javascript/reference/template_literals/index.html index 5bb4890ad8..52ca5a1802 100644 --- a/files/it/web/javascript/reference/template_literals/index.html +++ b/files/it/web/javascript/reference/template_literals/index.html @@ -1,7 +1,8 @@ --- title: Stringhe template -slug: Web/JavaScript/Reference/template_strings +slug: Web/JavaScript/Reference/Template_literals translation_of: Web/JavaScript/Reference/Template_literals +original_slug: Web/JavaScript/Reference/template_strings ---
    {{JsSidebar("More")}}
    diff --git a/files/it/web/opensearch/index.html b/files/it/web/opensearch/index.html index 87aa850da0..a80723a37a 100644 --- a/files/it/web/opensearch/index.html +++ b/files/it/web/opensearch/index.html @@ -1,10 +1,11 @@ --- title: Installare plugin di ricerca dalle pagine web -slug: Installare_plugin_di_ricerca_dalle_pagine_web +slug: Web/OpenSearch tags: - Plugin_di_ricerca translation_of: Web/OpenSearch translation_of_original: Web/API/Window/sidebar/Adding_search_engines_from_Web_pages +original_slug: Installare_plugin_di_ricerca_dalle_pagine_web ---

    Firefox permette di installare dei plugin di ricerca tramite JavaScript e supporta tre formati per questi plugin: MozSearch, OpenSearch e Sherlock.

    Quando il codice JavaScript tenta di installare un plugin, Firefox propone un messaggio di allerta che chiede all'utente il permesso di installare il plugin. diff --git a/files/it/web/performance/critical_rendering_path/index.html b/files/it/web/performance/critical_rendering_path/index.html index 31c0b82ac8..d80bf04f96 100644 --- a/files/it/web/performance/critical_rendering_path/index.html +++ b/files/it/web/performance/critical_rendering_path/index.html @@ -1,7 +1,8 @@ --- title: Percorso critico di rendering -slug: Web/Performance/Percorso_critico_di_rendering +slug: Web/Performance/Critical_rendering_path translation_of: Web/Performance/Critical_rendering_path +original_slug: Web/Performance/Percorso_critico_di_rendering ---

    {{draft}}

    diff --git a/files/it/web/progressive_web_apps/index.html b/files/it/web/progressive_web_apps/index.html index d7c931fec6..b5a75bd912 100644 --- a/files/it/web/progressive_web_apps/index.html +++ b/files/it/web/progressive_web_apps/index.html @@ -1,8 +1,9 @@ --- title: Design Sensibile -slug: Web_Development/Mobile/Design_sensibile +slug: Web/Progressive_web_apps translation_of: Web/Progressive_web_apps translation_of_original: Web/Guide/Responsive_design +original_slug: Web_Development/Mobile/Design_sensibile ---

    Come risposta ai problemi associati all'approccio per siti separati nel campo del Web design per mobile e desktop, un'idea relativamente nuova (che è abbastanza datata) sta aumentando la sua popolarità: evitare il rilevamento user-agent, e creare invece una pagina che risponda client-side alle capacità del browser. Questo approccio, introdotto da Ethan Marcotte nel suo articolo dal titolo A List Apart, è oggi conosciuto come Web Design Sensibile. Come l'approccio a siti separati, il Web Design sensibile possiede aspetti positivi e negativi.

    Aspetti Positivi

    diff --git a/files/it/web/security/insecure_passwords/index.html b/files/it/web/security/insecure_passwords/index.html index cfce604aab..9c1595577d 100644 --- a/files/it/web/security/insecure_passwords/index.html +++ b/files/it/web/security/insecure_passwords/index.html @@ -1,7 +1,8 @@ --- title: Password insicure -slug: Web/Security/Password_insicure +slug: Web/Security/Insecure_passwords translation_of: Web/Security/Insecure_passwords +original_slug: Web/Security/Password_insicure ---

    I dialoghi di Login tramite HTTP sono particolarmente pericolosi a causa della vasta gamma di attacchi che possono essere utilizzati per estrarre la password di un utente. Gli intercettatori della rete potrebbero rubare la password di un utente utilizzando uno "sniffing" della rete o modificando la pagina in uso. Questo documento descrive in dettaglio i meccanismi di sicurezza che Firefox ha messo in atto per avvisare gli utenti e gli sviluppatori dei rischi circa le password insicure e il furto delle stesse.

    diff --git a/files/it/web/svg/applying_svg_effects_to_html_content/index.html b/files/it/web/svg/applying_svg_effects_to_html_content/index.html index b277a2fc86..49ab8100df 100644 --- a/files/it/web/svg/applying_svg_effects_to_html_content/index.html +++ b/files/it/web/svg/applying_svg_effects_to_html_content/index.html @@ -1,7 +1,8 @@ --- title: Introduzione a SVG dentro XHTML -slug: Introduzione_a_SVG_dentro_XHTML +slug: Web/SVG/Applying_SVG_effects_to_HTML_content translation_of: Web/SVG/Applying_SVG_effects_to_HTML_content +original_slug: Introduzione_a_SVG_dentro_XHTML ---

     

    Panoramica

    diff --git a/files/it/web/svg/index.html b/files/it/web/svg/index.html index 4fcdc7a78d..840084ad4a 100644 --- a/files/it/web/svg/index.html +++ b/files/it/web/svg/index.html @@ -1,10 +1,11 @@ --- title: SVG -slug: SVG +slug: Web/SVG tags: - SVG - Tutte_le_categorie translation_of: Web/SVG +original_slug: SVG ---
    Iniziare ad usare SVG
    Questa esercitazione ti aiuterà ad iniziare ad usare SVG.
    diff --git a/files/it/web/web_components/using_custom_elements/index.html b/files/it/web/web_components/using_custom_elements/index.html index 4fa75cb380..8183605a23 100644 --- a/files/it/web/web_components/using_custom_elements/index.html +++ b/files/it/web/web_components/using_custom_elements/index.html @@ -1,7 +1,8 @@ --- title: Usare i custom elements -slug: Web/Web_Components/Usare_custom_elements +slug: Web/Web_Components/Using_custom_elements translation_of: Web/Web_Components/Using_custom_elements +original_slug: Web/Web_Components/Usare_custom_elements ---
    {{DefaultAPISidebar("Web Components")}}
    -- cgit v1.2.3-54-g00ecf