Implementazione di JavaScript
- Pagina precedente Storia di JavaScript
- Pagina successiva Sintassi ECMAScript
Il core ECMAScript di JavaScript descrive la sintassi e gli oggetti di base del linguaggio;
DOM descrive i metodi e le interfacce per gestire il contenuto delle pagine web;
BOM descrive i metodi e le interfacce per interagire con il browser.
ECMAScript, DOM e BOM
Nonostante ECMAScript sia un standard importante, non è l'unica parte di JavaScript, né l'unica parte standardizzata. Di fatto, un'implementazione completa di JavaScript è composta da 3 parti diverse:

ECMAScript
ECMAScript non è vincolato a qualsiasi browser specifico, di fatto, non menziona nemmeno i metodi per l'input e l'output degli utenti (questo è diverso da C, un linguaggio che deve dipendere da librerie esterne per completare tali compiti). Allora cosa è ECMAScript? La descrizione della norma ECMA-262 (paragrafo 2) è la seguente:
“ECMAScript può fornire capacità di programmazione di script fondamentali per diversi ambienti host, quindi il linguaggio di script fondamentale è regolato separatamente da qualsiasi ambiente host specifico... ...”
Il browser web è un ambiente host per ECMAScript, ma non è l'unico. Infatti, ci sono innumerevoli altri ambienti (come ScriptEase di Nombas e ActionScript utilizzato da Macromedia sia in Flash che in Director MX) che possono accogliere implementazioni di ECMAScript. Allora, cosa stabilisce ECMAScript oltre ai browser?
In poche parole, ECMAScript descrive quanto segue:
- Grammatica
- Tipo
- Espressione
- Parola chiave
- Parola riservata
- Operatore
- Oggetto
ECMAScript è semplicemente una descrizione che definisce tutte le proprietà, i metodi e gli oggetti del linguaggio di script. Altri linguaggi possono implementare ECMAScript come riferimento per le funzionalità, come fa JavaScript:

Ogni browser ha la propria implementazione dell'interfaccia ECMAScript, che poi viene estesa, includendo DOM e BOM (che verranno discussi nei prossimi capitoli). C'è anche altre implementazioni e linguaggi che hanno esteso ECMAScript, come Windows Scripting Host (WSH), ActionScript di Macromedia in Flash e Director MX, e Nombas ScriptEase.
1. Versione di ECMAScript
ECMAScript è diviso in diverse versioni, definite in uno standard chiamato ECMA-262. Come altri standard, ECMA-262 viene modificato e aggiornato. Quando ci sono aggiornamenti principali, viene pubblicata una nuova versione dello standard. L'ultima versione di ECMA-262 è la 5.1, pubblicata a giugno 2011.
La prima versione di ECMA-262 è essenzialmente la stessa di Netscape JavaScript 1.1, ma ha eliminato tutto il codice relativo ai browser, oltre a alcune piccole modifiche. Prima di tutto, ECMA-262 richiede il supporto per lo standard Unicode (per supportare le lingue multilingue). Secondo, richiede che gli oggetti siano indipendenti dalla piattaforma (il JavaScript 1.1 di Netscape, di fatto, ha diverse implementazioni di oggetti, come l'oggetto Date, che dipende dalla piattaforma). Questo è il motivo principale per cui JavaScript 1.1 e 1.2 non sono conformi alla prima versione della norma ECMA-262.
La maggior parte degli aggiornamenti della seconda edizione di ECMA-262 sono sostanzialmente editoriali. Questo aggiornamento dello standard è stato fatto per garantire una stretta conformità con ISO/IEC-16262 e non ha aggiunto, modificato o eliminato contenuti specifici. ECMAScript di solito non segue la seconda edizione.
La terza edizione di ECMA-262 è stata la prima aggiornamento reale dello standard. Ha fornito aggiornamenti per la gestione delle stringhe, la definizione degli errori e l'output numerico. Ha anche aggiunto il supporto per le espressioni regolari, nuove istruzioni di controllo, il trattamento delle eccezioni try...catch e alcune piccole modifiche per l'internazionalizzazione dello standard. In generale, è il punto in cui ECMAScript è diventato un vero linguaggio di programmazione.
2. Cos'è la conformità ECMAScript
In ECMA-262, la conformità ECMAScript (conformance) è chiaramente definita. Un linguaggio di script deve soddisfare i seguenti quattro principi fondamentali:
- Le implementazioni conformi devono supportare tutti i
- Le implementazioni conformi devono supportare lo standard Unicode (UCS)
- Le implementazioni conformi possono aggiungere
- Le implementazioni conformi possono supportare
Tutte le implementazioni di ECMAScript devono conformarsi agli standard sopra menzionati.
3. Supporto ECMAScript nei browser web
Il Navigator 3.0 di Netscape, che conteneva JavaScript 1.1, è stato rilasciato nel 1996. Poi, la specifica JavaScript 1.1 è stata presentata come bozza di nuovo standard all'EMCA. Con la popolarità esplosiva di JavaScript, Netscape ha iniziato con entusiasmo lo sviluppo della versione 1.2. Ma c'era un problema, ECMA non ha accettato il bozza di Netscape. Non molto tempo dopo la pubblicazione del Navigator 3.0, Microsoft ha rilasciato IE 3.0. Questa versione di IE conteneva JScript 1.0 (il nome del proprio implementazione di JavaScript di Microsoft), che era originariamente progettato per essere confrontabile con JavaScript 1.1. Tuttavia, a causa di documentazione incompleta e alcune caratteristiche ripetute inappropriatamente, JScript 1.0 non ha raggiunto il livello di JavaScript 1.1.
Prima della definitiva approvazione della prima versione di ECMA-262, la versione 4.0 di Netscape Navigator con JavaScript 1.2 è stata lanciata nel 1997. In seguito, durante quell'anno, lo standard ECMA-262 è stato accettato e standardizzato. Pertanto, JavaScript 1.2 non è compatibile con la prima versione di ECMAScript, anche se ECMAScript dovrebbe essere basato su JavaScript 1.1.
Il passo successivo per JScript è stato l'introduzione di JScript 3.0 in IE 4.0 (la versione 2.0 è stata distribuita insieme a IIS 3.0, ma non è stata inclusa nei browser). Microsoft ha fortemente promosso JScript 3.0 come il primo linguaggio di script nel mondo a conformarsi completamente allo standard ECMA. In quel momento, ECMA-262 non era ancora stato definitivamente approvato, quindi JScript 3.0 ha avuto la stessa sorte di JavaScript 1.2 - non è mai riuscito a conformarsi allo standard ECMAScript finale.
Netscape ha scelto di aggiornare la sua implementazione di JavaScript nel Netscape Navigator 4.06. JavaScript 1.3 ha permesso a Netscape di conformarsi completamente alla prima versione di ECMAScript. Netscape ha aggiunto il supporto per lo standard Unicode e ha mantenuto tutte le nuove caratteristiche introdotte in JavaScript 1.2, implementando un'indipendenza di piattaforma.
Quando Netscape ha reso pubblico il suo codice sorgente come progetto Mozilla, era previsto che JavaScript 1.4 sarebbe stato integrato nel Netscape Navigator 5.0. Tuttavia, una decisione avventata - riprogettare completamente il codice di Netscape, ha distrutto questo lavoro. JavaScript 1.4 è stato pubblicato semplicemente come linguaggio di script server-side per Netscape Enterprise Server e non è mai stato integrato nei browser.
Oggi, tutti i principali browser web rispettano la terza edizione di ECMA-262.
Il seguente elenco mostra il supporto ECMAScript nei principali browser Web:
Browser | Compatibilità DOM |
---|---|
Netscape Navigator 2.0 | - |
Netscape Navigator 3.0 | - |
Netscape Navigator 4.0 - 4.05 | - |
Netscape Navigator 4.06 - 4.79 | Edizione 1 |
Netscape 6.0+ (Mozilla 0.6.0+) | Edizione 3 |
Internet Explorer 3.0 | - |
Internet Explorer 4.0 | - |
Internet Explorer 5.0 | Edizione 1 |
Internet Explorer 5.5+ | Edizione 3 |
Opera 6.0 - 7.1 | Edizione 2 |
Opera 7.2+ | Edizione 3 |
Safari 1.0+/Konqueror ~ 2.0+ | Edizione 3 |
DOM
DOM(Document Object Model)è l'interfaccia di applicazione (API) per HTML e XML. Il DOM organizza l'intera pagina in un documento costituito da nodi gerarchici. Ogni parte di una pagina HTML o XML è un derivato di un nodo. Considera la seguente pagina HTML:
<html> <head> <title>Sample Page</title> </head> <body> <p>hello world!</p> </body> </html>
Questo codice può essere rappresentato come un grafico gerarchico dei nodi con DOM:

DOM rappresenta il documento tramite la creazione di un albero, permettendo agli sviluppatori di avere un controllo mai avuto prima sul contenuto e la struttura del documento. Con l'API DOM è facile eliminare, aggiungere e sostituire i nodi.
1. Perché il DOM è indispensabile
Dalla IE 4.0 e Netscape Navigator 4.0 che supportano diversi tipi di HTML dinamico (DHTML), gli sviluppatori per la prima volta possono modificare l'aspetto e il contenuto del sito senza ricaricare la pagina. Questo è un grande salto tecnico del Web, ma ha anche portato problemi enormi. Netscape e Microsoft hanno sviluppato il proprio DHTML, ponendo fine all'era in cui gli sviluppatori di Web potevano scrivere una sola pagina HTML che potesse essere accessibile in tutti i browser.
L'industria ha deciso che è necessario fare qualcosa per mantenere la cross-platform della Web, si preoccupano che se lasciano che Netscape e Microsoft Company così facciano, la Web必将分化成两个独立的部分,每一部分只适用于特定的浏览器。因此,负责指定 Web 通信标准的团体 W3C(World Wide Web Consortium)就开始制定 DOM。
2. I vari level del DOM
DOM Level 1 è stato proposto dal W3C nel ottobre 1998. È composto da due moduli, ovvero DOM Core e DOM HTML. Il primo fornisce una struttura di documento basata su XML per accedere e operare su qualsiasi parte del documento; il secondo aggiunge oggetti e metodi specifici per HTML, espandendo così il DOM Core.
Attenzione, DOM non è esclusivo di JavaScript, di fatto molte altre lingue hanno implementato. Tuttavia, il DOM nei browser web è implementato con ECMAScript e ora è una parte molto importante del linguaggio JavaScript.
DOM Level 1 è solo un obiettivo, ovvero pianificare la struttura del documento, mentre l'obiettivo di DOM Level 2 è molto più ampio. L'estensione originale del DOM ha aggiunto il supporto per gli eventi del mouse e dell'interfaccia utente (DHTML offre un supporto ricco per questo), l'intervallo, l'esplorazione (metodi ripetuti sul documento DOM) e ha aggiunto il supporto per CSS (tabella di stili incrociati) attraverso l'interfaccia degli oggetti. Il DOM Core originale introdotto al livello 1 ha anche aggiunto il supporto per gli spazi di nomi XML.
DOM Level 2 ha introdotto diversi nuovi moduli DOM per gestire nuovi tipi di interfacce:
- DOM vista - descrive le varie viste del documento (cioè il documento prima e dopo la stilettizzazione CSS)
- DOM eventi - descrive le interfacce degli eventi
- DOM stile - descrive le interfacce per gestire gli stili basati su CSS
- DOM esplorazione e intervallo - descrive le interfacce per esplorare e operare sull'albero del documento
DOM Level 3 ha introdotto metodi per caricare e mantenere in modo uniforme i documenti (inclusi nei moduli DOM Load and Save) e metodi per validare i documenti (DOM Validation), espandendo ulteriormente DOM. A livello 3, DOM Core è stato esteso per supportare tutte le caratteristiche di XML 1.0, inclusi XML Infoset, XPath e XML Base.
Quando si studia DOM, qualcuno potrebbe fare riferimento a DOM Level 0. Attenzione, non esiste un standard DOM Level 0, è solo un punto di riferimento storico per DOM (DOM Level 0 si riferisce ai DHTML supportati da IE 4.0 e Netscape Navigator 4.0).
3. Altri DOM
Oltre al DOM Core e DOM HTML, altre lingue hanno pubblicato i loro standard DOM. Tutte queste lingue sono basate su XML, e ogni DOM aggiunge metodi e interfacce unici per la lingua corrispondente:
- Linguaggio vettoriale scalabile (SVG) 1.0
- Linguaggio di markup numerico (MathML) 1.0
- Linguaggio di integrazione multimediale sincrono (SMIL)
Nota:Se si desidera approfondire ulteriormente, visitare il sito CodeW3C Corso SMIL e Corso SVG.
Inoltre, altre lingue hanno sviluppato le loro implementazioni DOM, come il linguaggio di interfaccia utente XML di Mozilla (XUL). Tuttavia, solo le lingue elencate sopra sono standard raccomandati dal W3C.
Supporto DOM nei browser web
DOM era già uno standard prima che i browser web iniziassero a implementarlo. La prima tentativa di IE di implementare DOM è stata nella versione 5.0, ma in realtà ha avuto un vero supporto DOM solo a partire dalla versione 5.5, implementando il DOM Livello 1. Da allora, IE non ha introdotto nuove funzionalità DOM.
Netscape ha introdotto il supporto DOM solo con Netscape 6 (Mozilla 0.6.0). Attualmente, Mozilla ha il miglior supporto DOM, implementando il Livello 1 completo, quasi tutto il Livello 2 e una parte del Livello 3. (L'obiettivo del team di sviluppo di Mozilla è costruire un browser completamente compatibile con lo standard, e il loro lavoro ha avuto successo.)
Opera ha aggiunto supporto DOM solo a partire dalla versione 7.0, e anche Safari ha implementato la maggior parte del DOM Livello 1. Essi sono quasi al livello di IE 5.5, e in alcuni casi addirittura superiori. Tuttavia, in termini di supporto DOM, tutti i browser sono nettamente inferiori a Mozilla. La tabella sottostante elenca il supporto DOM dei browser più comuni.
Browser | Compatibilità DOM |
---|---|
Netscape Navigator 1.0 - 4.x | - |
Netscape 6.0+ (Mozilla 0.6.0+) | Livello 1, Livello 2, Livello 3 (parziale) |
IE 2.0 - 4.x | - |
IE 5.0 | Livello 1 (minimo) |
IE 5.5+ | Livello 1 (quasi tutto) |
Opera 1.0 - 6.0 | - |
Opera 7.0+ | Livello 1 (quasi tutto), Livello 2 (parziale) |
Safari 1.0+/Konqueror ~ 2.0+ | Livello 1 |
Nota:Se si desidera approfondire la conoscenza del DOM, visitare il sito CodeW3C Corso HTML DOM e Corso XML DOM.
BOM
IE 3.0 e Netscape Navigator 3.0 hanno fornito una funzionalità - BOM (Browser Object Model), che permette di accedere e manipolare le finestre del browser. Utilizzando il BOM, gli sviluppatori possono muovere le finestre, cambiare il testo nella barra di stato e eseguire altre azioni non direttamente correlate al contenuto della pagina. Quello che rende il BOM unico e spesso suscettibile di dubbio è che è solo una parte di JavaScript, senza alcun standard correlato.
Il BOM gestisce principalmente le finestre del browser e i frame, ma di solito le estensioni JavaScript specifiche del browser sono considerate parte del BOM. Queste estensioni includono:
- Aprire una nuova finestra del browser
- Spostare, chiudere la finestra del browser e regolare la dimensione della finestra
- Oggetto che fornisce dettagli sull'browser Web
- Oggetto che fornisce dettagli sulla risoluzione dello schermo dell'utente
- Supporto per i cookie
- IE ha esteso BOM aggiungendo la classe ActiveXObject, che può instanziare oggetti ActiveX tramite JavaScript
Poiché non esiste uno standard BOM correlato, ogni browser ha la propria implementazione BOM. Ci sono alcune convenzioni, come l'oggetto window e l'oggetto navigation, ma ogni browser può definire le proprie proprietà e metodi per questi oggetti o altri oggetti.
Vedere:
- Pagina precedente Storia di JavaScript
- Pagina successiva Sintassi ECMAScript