Javascript, che abbiamo fin qui usato per manipolare XML, è stato studiato per essere diffuso in Internet e possiede, accanto ad una grande facilità d'uso, anche qualche aspetto un po' ostico. Per motivi di sicurezza (il web non è un posto tanto tranquillo):
- due pagine web non scambiano solitamente dati tra di esse, ma solo attraverso il DB del server che le ha generate;
- lo script ha un accesso limitato al filesystem del nostro PC, permettendoci di operare ben pochi salvataggi.
Esistono alcune eccezioni alle precedenti regole. Ne citiamo due:
- tramite le proprietà "parent" e "opener" la pagina corrente può leggere e modificare un'altra pagina aperta. In particolare gli input di tipo "hidden" possono funzionare come dei canali di scambio dei dati senza modificare la parte visibile;
- tramite l'interfaccia Microsoft "FileSystemObject", basata su di un ActiveX abbastanza diffuso, gli script possono accedere al filesystem del client per tutte le operazioni di lettura e modifica.
I due "trucchi" citati hanno una limitazione teorica: possono trasmettere dati solamente in formato testo:
- gli input hidden possono contenere stringhe, ma non variabili complesse come gli array;
- l'interfaccia FileSystemObject può generare e leggere solamente file con estensione .txt.
Anche questa è una scelta di sicurezza: il formato testo è visto solitamente come "innocuo" e poco potente. Ebbene: cosa è XML se non testo? Utilizzando XML possiamo trasmettere dati strutturati ovunque sia previsto lo scambio di stringhe di caratteri.
Nei seguenti paragrafi utilizzeremo la coppia XML + DOM ed i due trucchi precedenti per superare alcuni dei limiti dei linguaggi di scripting, permettendo alle pagine Javascript di funzionare come dei veri e propri oggetti di programmazione, dotati di un nucleo eseguibile e di un interfaccia di input- output completa.
Nel capitolo 4 queste tecniche ed altre ancora verranno applicate in esempi che tentano di risolvere alcuni dei più diffusi problemi di programmatori web e non solo.