Newsgroup: it.comp.lang.javascript
Titolo: Javascript, opzioni e file esterni

Ciao a tutti,
mi piacerebbe sentire una vostra opinione:
Vorrei visualizzare in una pagina i dati memorizzati in un file 
esterno *.js che funge da database.
Per alleggerire il tutto preferirei, anziché caricare TUTTI i 
dati e poi effettuare la query, suddividere i dati in più file 
esterni e richiamarne uno specifico legato ad una scelta da 
parte dell'utente.
Se non mi sono spiegato faccio un esempio banale: voglio 
elencare le città del mondo; creo un file italia.js (che 
contiene torino, milano, roma, palermo, ecc) e un file 
francia.js (che contiene parigi, marsiglia, reims, bordeaux, 
ecc). L'utente preme il bottone italia e viene richiamato 
italia.js, opure il bottone francia e viene caricato francia.js.
Non so come fare, perché so effettuare il richiamo solo con 
<script src="italia.js" ecc ecc>, ed è un tag che non posso 
inserire all'interno di un altro script.
In Clipper (chi se lo ricorda?) esisteva una funzione 
(&variabile) che restituiva come variabile il valore 
corrispondente al contenuto della variabile stessa. Uffa, non so 
spiegarlo. Bè, funzionava così (con le dovute approssimazioni!):
if (scelta="A") { paese=italia.js; }
if (scelta="B") { paese=francia.js; }
..
<script src=&paese>
Esiste qualcosa di simile in Javascript, o un sistema 
alternativo?
Grazie.
Zuc
-- 
Postato da Alice Newsgroup: lo usi da web ma con le funzioni del newsreader 
http://newsgroup.alice.it
Gerarchie it, italia, it-alt, tin, it.binari. Unico!

 /browse_thread/thread/8f232198a126f3e2/>
OK, ma prova e riprova, e grazie a un accenno trovato su un 
altro forum, ho capito che sbagliavo:
1) a scrivere il codice;
2) a ritenere che fosse impossibile annidare uno script dentro 
un altro, sic et simpliciter.
Ho risolto così (riprendo il mio esempio banale):
<script>
..
if (scelta="A") { paese=italia.js; }
if (scelta="B") { paese=francia.js; }
..
function SelezionaLoStato(paese) { 
document.write('<script type="text/javascript" 
src="'+paese+'"><\/script>'); 
}
SelezionaLoStato(paese); 
..
</script>
Sbagliavo perché non avevo pensato che il tag </script> 
all'interno del document.write veniva interpretato dal browser 
come la chiusura dello script e quindi interrompeva la funzione 
e inceppava il meccanismo.
E' bastato considerare la barra / come un carattere speciale e 
anteporre il back slash.
Così posso alleggerire i file esterni e velocizzarne il 
caricamento.
Grazie assai...


 caricamento.
ok ma non ho fatto niente...
il mio era un discorso un po' diverso...
se ti resta del tempo mi togli la curiosità sulla logica dei tuoi file?

 logica dei tuoi file?
Certo!
Tempo fa ho realizzato un programma in VB per l'autoistruzione 
in varie materie. Si trattava di quiz a risposta multipla, 500 
per materia, tratti da questionari in formato txt, che avevano 
però con la caratteristica che la risposta esatta era sempre 
la "A".
L'applicativo andava a selezionare le domande (e le risposte)
della materia scelta dall'utente pescandole da un database che 
le comprendeva tutte, e proponeva le risposte in sequenza 
casuale.
Tutto OK, tranne per il fatto che funzionava solo in ambiente 
Windows, ma anche e soprattutto perché volevo evitare la fase 
dell'installazione, dato che doveva essere usato anche su 
macchine in cui l'utente non aveva diritti amministrativi, e 
volevo che fosse un programma eseguibile da floppy o da 
pendrive. Avevo perciò evitato l'uso di librerie, ma sui pc dove 
non era presente il driver del database, il programma non 
funzionava, ovviamente.
Ho rifatto tutto in JS e al posto del database ho suddiviso i 
quiz per materia. L'utente seleziona la materia e viene caricato 
il file esterno corrispondente. Se vuole cambiare materia... F5.
Il file principale pesa 7K, e gli esterni 300/360 K.
Per pura libidine ho anche previsto l'opzione che le domande cui 
è stata data la risposta esatta non vengano riproposte, 
memorizzando l'esito in un cookie. Lo studente, sempre col 
programma, può poi importare ed esportare la sequenza del 
cookie. In pratica Pierino inizia il test a casa, poi, quando 
interrompe, visualizza la sequenza delle risposte date, copia e 
incolla su un file txt, va a scuola e prima di continuare, copia 
e incolla i dati nell'apposita textarea e ricrea il suo cookie 
di casa.
Cervellotico?
Zuckar


 Zuckar
posso fare alcune osservazioni?
vabbe' non aspetto la risposta :)
io quando ti chiedevo:
'se ti resta del tempo mi togli la curiosità sulla logica dei tuoi file'
non intendevo che mi raccontassi la storia di questo tuo tool,
volevo sapere il file 1.htm richiamava il file 2.htm che aveva in
querystring o in un coockie un valore tale per cui veniva richiamato il
file 3.js
volevo sapere questo per capiere dove e se ho frainteso un paio di cose
Comunque in conclusione, è doverosa quest'ultima osservazione, se questo
tuo tool è fatto interamente in JS e se gli utenti sono studenti che basta
basta facciano le superiori, FAI ATTENZIONE che non è sicuro!
Probabilmente è un'osservazione inutile e tu già lo sai, pero' si possono
dedurre le risposte manipolare il coookie e così via...

 via...
Certamente conosco i limiti, soprattutto accessibilità al codice 
e ai dati, leggibilissimi con qualunque editor.
Tieni però presente che gli utenti hanno già tutti i quiz 
risolti su cartaceo (con la famosa risposta "A").
Il mio lavoretto è solo un aiuto allo studio, affinché la 
ricerca della risposta esatta sia ragionata.
Diversamente, è ovvio, da un programma con finalità valutative.
Se Pierino totalizza 500/500, il "bravo" se lo deve dire da solo.
Grazie, Ugo: ho trovato una persona davvero gentile.
Zuc
