Newsgroup: it.comp.lang.javascript
Titolo: Creazione oggetto JS.

Salve a tutti.
Nello header di una pagina HTML ho definito
un oggetto JS e poi lo creo; e fin qui tutto ok.
Siccome devo utilizzare lo stesso oggetto in
più pagine, ho pensato di spostare la definizione
dell'oggetto in un file f.js esterno e lasciare nello
header solo la creazione.
Fatto ciò, però, non funziona più nulla; non riesce
probabilmente a creare l'oggetto. La console
di FF dice: the object has no properties.
Succede forse che il file f.js viene scaricato in
ritardo rispetto al momento della creazione
dell'oggetto? Ma a questo punto, la seconda
volta che carico la pagina, il file f.js è già
presente in cache e quindi mi aspetto un buon
funzionamento. Invece no!
Qualcuno gentile sa illuminarmi? Grazie.

 funzionamento. Invece no!
cache? non esiste cache per gli oggetti javascript, nel momento in cui
ricarichi o cambi pagina vengono distrutti.
-- 
"Ho smesso di fumare.
 Vivrò una settimana di più.
 E in quella settimana pioverà a dirotto"
									    W.A.

 Qualcuno gentile sa illuminarmi? 
Senza altre informazioni, è difficile. Fornisci più dettagli sull'errore detto
dalla js console; o se possibile pubblica la pagina online da qualche parte.
-- 
- Penso che sia meglio dividerci
- Buona idea
- SII, così possiamo fare più danno!!

 ricarichi o cambi pagina vengono distrutti.
Aguzza la vista, sta parlando del file js che è stato cachato, non degli
oggetti. :)
-- 
- Vuoi tu questo corpo?
- E' una domanda trabocchetto?

Guardando nel source della pagina, vedo che il framework
che uso (Intraweb su Delphi) ha spostato la riga del caricamento
del file f.js (che è nella cache del browser, quindi viene caricato)
*DOPO* la riga in cui effettuo la creazione dell'oggetto
(che ho fatto tramite function; Cristiano, non so altri sistemi
per creare un oggetto, sono molto ignorante su JS e HTML e ...).
Comunque, ho risolto così:
- la dichiarazione dell'oggetto rimane nel file f.js esterno;
- var miaVar; rimane nell'header della pagina dove occorre;
- sempre nello header della pagina faccio:
  function onloadPage() { miaVar = new myObject(..);}
e dico al framework di eseguirla al caricamento della pagina
(penso sia equivalente a <body onload="...").
Spero che questa sia una soluzione valida.
Grazie della collaborazione, Massimo.

 Spero che questa sia una soluzione valida.
Va benissimo, a patto che non ci sia qualcosa che utilizzi quell'oggetto prima
che la pagina sia stata completamente caricata.
-- 
- Egon, questo mi ricorda quando tentasti di trapanarti il cranio.
- Mi saebbe riuscito se non mi avessi fermato.

Grazie.
Ne approfitto della tua (e vostra) bontà per chiarirmi
bene un concetto.
Se ho una sezione js (in un header o in un file esterno,
penso sia la stessa cosa), del tipo:
var x = 10;
var y = 20;
var pippo = x*y;
function F1() {...}
function F2() {...}
function F3() {...}
le prime tre righe vengono eseguite quando si carica
la pagina (o prima), mentre le function sono
eseguite solo su chiamata (es.: dall'onclick di un
bottone).
E' corretto tutto ciò?
Se l'oggetto è creato in un file esterno, lo posso
utilizzare tranquillamente dopo il caricamento
della pagina in quanto esso già presente
in memoria?
Grazie ancora, Massimo.

 in memoria?
Sì
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.

 in memoria?
Se lo scope lo permette (leggasi ad esempio, non è stato creato localmente in
una funzione nel file esterno), e non è stato distrutto, si.
-- 
- E.. lei è mestruata al momento?
- Ma scusi questo che c' entra??
- Si inchini alla scienza!