di piercing » 07/02/03 00:15
Dunque... provo a spiegarmi meglio...
Buona parte dei linguaggi di oggi (non voglio parlare di Object Oriented) sono basati su:
- un linguaggio procedurale (ad esempio Visual Basic, Javascript, tanto per dirne due)
- una serie di "componenti" predefiniti, più altri che possono essere aggiunti/utilizzati dall'utente.
I linguaggi seguono degli standard (nel caso di Javascript si chiamano standard ECMA), quindi se un certo browser supporta Javascript v.1.3 lo supporta in tutto e per tutto, non esistono comandi che non vengono interpretati, e sottolineo quindi che Netscape legge infinatamente meglio il Javascript di quanto fa Explorer. Netscape l'ha inventato ed ha l'interprete javascript nativo, tant'è vero che ha addirittura un tool di debug integrato con il browser stesso.
I componenti invece sono la nota dolente... poniamo infatti che il concetto di componente sia un qualcosa di componibile, organizzato in maniera gerarchica. Ogni browser ed ogni singola versione ha a disposizione una serie di componenti che varia da browser a browser. Per far funzionare javascript, serve che questo gestisca gli oggetti che in quel browser esistono. Se faccio riferimento ad un componente inesistente.... ovviamente javascript non funziona. Quindi bisogna conoscere con esattezza qual'è tutta la gerarchia dei componenti che sono disponibili per ogni browser, con tutti gli attributi e le azioni che quel singolo componente può utilizzare. Questa alberatura dei componenti viene chiamato DOM. Ma sottolineo il fatto che il DOM nulla ha a che vedere col javascript, perchè può essere utilizzato con qualunque altro linguaggio di programmazione (per non andare tanto lontano VBS ad esempio)
Per fare un esempio "Se la pagina è piena gira pagina" è una riga di codice "javascript".
"Se" è il javascript
"pagina" è il componente
"piena" è un attributo del componente "pagina"
"gira" è un azione del componente "pagina"
A questo punto chiedo, se il componente "pagina" non esiste, quanti errori mi da una singola istruzione?
Tutta questa filippica esiste per dire che non può esistere un qualcosa che possa scrivere javascript in maniera generica per tutti i browser, proprio perchè non hanno praticamete nessuna base comune.
Devo dire che per fortuna i DOM stanno lentamente unificandosi, almeno sugli oggetti fondamentali, ma è una delle lotte che il W3C sta portando avanti da tantissimo tempo.
Per fare menù DHTML a manina posso solo dare il consiglio di prenderne di già fatti e modificarli sono negli stili, altrimenti dovete conoscere i DOM di tutti i browser a memoria. Altro consiglio è quello di abbandonare completamente ogni tipo di supporto alle versioni precedenti alla 4.0 dei browser (che in Netscape vuol dire versioni precedenti alle 4.72 in genere).