Document Object Model: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
m →Storia: Eliminato uno spazio |
||
(27 versioni intermedie di 14 utenti non mostrate) | |||
Riga 1:
[[File:Simpe HTML page DOM.svg|thumb|upright=1.4|Rappresentazione ad albero del DOM di un semplice documento [[HTML]]]]
In [[informatica]] il '''Document Object Model''' (spesso abbreviato come '''DOM'''),
== Storia ==
La storia del Document Object Model si intreccia con la storia delle "[[Guerra dei browser|guerre del browser]]" della fine degli anni '90 tra [[Netscape Navigator]] e [[Internet Explorer|Microsoft Internet Explorer]], così come con quella di [[JavaScript]] e [[JScript]], i primi linguaggi di scripting ad essere ampiamente implementati nel Motore JavaScript dei browser web.
JavaScript è stato distribuito da Netscape Communications nel 1995 all'interno di Netscape Navigator 2.0. Il concorrente di Netscape, Microsoft, ha distribuito Internet Explorer 3.0 l'anno successivo con una re-implementazione di JavaScript chiamata JScript. JavaScript e JScript consentono agli sviluppatori web di creare pagine web con interattività [[lato client]]. Le funzionalità limitate per rilevare eventi generati dagli utenti e modificare il documento HTML nella prima generazione di questi linguaggi sono diventati noti come "DOM Level 0" o "Legacy DOM". Nessuno standard indipendente è stato sviluppato per DOM Livello 0, ma è stato parzialmente descritto nelle specifiche per HTML 4.
Il DOM legacy era limitato nei tipi di elementi a cui era possibile accedere. È possibile fare riferimento agli elementi del modulo, del collegamento e dell'immagine con un nome gerarchico che inizia con l'oggetto documento principale. Un nome gerarchico potrebbe fare uso dei nomi o dell'indice sequenziale degli elementi attraversati. Ad esempio, è possibile accedere a un elemento di input del modulo come <code>document.formName.inputName</code> o <code>document.forms[0].elements[0]</code>.
Il DOM legacy abilitava la convalida dei moduli lato client e il popolare effetto " rollover ".
Nel 1997 Netscape e Microsoft hanno distribuito rispettivamente la versione 4.0 di Netscape Navigator e Internet Explorer, aggiungendo il supporto per la funzionalità Dynamic HTML (DHTML) che abilita le modifiche a un documento HTML caricato. [[DHTML]] richiedeva estensioni per l'oggetto documento rudimentale che era disponibile nelle implementazioni DOM legacy. Sebbene le implementazioni DOM legacy fossero ampiamente compatibili poiché JScript era basato su JavaScript, le estensioni DOM DHTML sono state sviluppate in parallelo da ciascun produttore di browser e sono rimaste incompatibili. Queste versioni del DOM sono diventate note come "DOM intermedio".
Dopo la standardizzazione di [[ECMAScript]], il W3C DOM Working Group ha iniziato a redigere una specifica DOM standard. La specifica completa, nota come "DOM Level 1", divenne una raccomandazione del W3C alla fine del 1998. Nel 2005, gran parte del DOM W3C era ben supportata dai comuni browser abilitati per ECMAScript, incluso Microsoft Internet Explorer versione 6 (dal 2001), Opera, [[Safari (browser)|Safari]] e [[Gecko]] (come Mozilla, Firefox, SeaMonkey e Camino).
== Descrizione ==
Line 26 ⟶ 38:
Il seguente documento HTML:
<
<!-- My document -->
Line 35 ⟶ 47:
<BODY>
<H1>Header</H1>
<P>
Paragraph
</P>
<P>
Paragraph
Line 40 ⟶ 55:
</BODY>
</HTML>
</syntaxhighlight>
avrebbe il seguente albero DOM:
[[File:DOMExample.png|centro|572x572px]]
È da notare che in questo esempio anche i cosiddetti ''caratteri blank'' (spazi, tabulazioni, ecc.) sono considerati elementi dell'albero, nonostante questi non vengano poi mostrati dal [[browser]] (a meno che non si trovino all'interno di un tag ''pre'').
* [[DOM Inspector]]▼
* [[XHTML]]▼
* Xerces▼
== Specifiche ==
Line 69 ⟶ 79:
** {{cita web|https://www.w3.org/TR/DOM-Requirements/|Requisiti di DOM}}
==
▲* [[DOM Inspector]]
▲* [[XHTML]]
▲* [[Xerces]]
== Altri progetti ==
{{interprogetto|preposizione=sul|b=JavaScript/DOM}}
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC}}
* {{cita web|https://www.w3.org/DOM/|W3.org on DOM}}
* {{cita web|http://xml.coverpages.org/dom.html|Technology Reports}}
Line 83 ⟶ 99:
* {{cita web |1=https://mozilla.org/docs/dom/domref/ |2=Gecko DOM Reference |accesso=12 settembre 2005 |urlarchivio=https://web.archive.org/web/20050924101420/http://www.mozilla.org/docs/dom/domref/ |dataarchivio=24 settembre 2005 |urlmorto=sì }}
* {{cita web |1=http://developer.kde.org/documentation/library/cvs-api/khtml/html/namespaceDOM.html |2=khtml Library API Documentation |accesso=12 settembre 2005 |urlarchivio=https://web.archive.org/web/20050306061629/http://developer.kde.org/documentation/library/cvs-api/khtml/html/namespaceDOM.html |dataarchivio=6 marzo 2005 |urlmorto=sì }}
* Interfacce per...▼
** {{cita web|https://xml.apache.org/xerces-c/program-3.html|C++}}▼
** [https://www.w3.org/2003/01/dom2-javadoc/index.html Java] - W3C Document Object Model Level 2▼
** {{cita web | 1 = http://interaction.in-progress.com/developer/dom/ | 2 = Lisp | accesso = 12 settembre 2005 | urlarchivio = https://web.archive.org/web/20051102123055/http://interaction.in-progress.com/developer/dom/ | dataarchivio = 2 novembre 2005 | urlmorto = sì }}▼
** [http://www.philo.de/xml/downloads.shtml Pascal] ([[Kylix (linguaggio)|Kylix]])▼
** {{cita web|http://search.cpan.org/~tjmather/XML-DOM-1.43/|Perl}}▼
** {{cita web|http://www.php.net/manual/it/ref.dom.php|PHP5}}▼
** {{cita web | 1 = https://www.python.org/doc/current/lib/module-xml.dom.html | 2 = Python | accesso = 12 settembre 2005 | urlarchivio = https://web.archive.org/web/20050618001305/http://www.python.org/doc/current/lib/module-xml.dom.html | dataarchivio = 18 giugno 2005 | urlmorto = sì }}▼
** {{cita web | 1 = http://libgdome-ruby.berlios.de/ | 2 = Ruby | accesso = 12 settembre 2005 | urlarchivio = https://web.archive.org/web/20050609080554/http://libgdome-ruby.berlios.de/ | dataarchivio = 9 giugno 2005 | urlmorto = sì }}▼
▲
* {{cita web | 1 = http://www.php.net/manual/it/ref.domxml.php | 2 = PHP4 | accesso = 16 gennaio 2006 | dataarchivio = 18 dicembre 2005 | urlarchivio = https://web.archive.org/web/20051218053603/http://www.php.net/manual/it/ref.domxml.php | urlmorto = sì }}
* {{cita web | 1 = http://www.php.net/manual/it/ref.dom.php | 2 = PHP5 | accesso = 16 gennaio 2006 | dataarchivio = 30 agosto 2005 | urlarchivio = https://web.archive.org/web/20050830165859/http://www.php.net/manual/it/ref.dom.php | urlmorto = sì }}
▲
▲
{{Interfacce web}}
{{Browser Internet}}
{{Controllo di autorità}}
|