Newsgroup: it.comp.lang.javascript
Titolo: Popolare un array da una popup

Ho questo problem
Ho un frameset contenente un array
Se in questo frameset ho un form che mi popola l'array tutto bene
Se apro una popup e da qui popolo l'array quando richiamo i dati contenuti
nell'array  compare questo messaggio:
Il chiamato (server[applicazione non server]) non é disponibile ed é
scomparso
riga 11
carattere 1
La riga incriminata é:
if (parent.top.elenco[z].nome!="")
{                                     <---questa é la riga 11
Il bello é che con un Macintosh sia Explorer che Netscape non danno problemi
mentre con Explorer per Windows compare l'errore
Qualcuno riesce a spiegarmi il perche?
Grazie di all
##########################
 Gibe
 Modena Italy
 Utente Macintosh dal 1991
 Il mio vero indirizzo e'
 
gi...@freemail.it
##########################

 mentre con Explorer per Windows compare l'errore
Non è "il bello", è "lo strano" perché il comportamento corretto è quello di
segnalare l'errore

 Devi quindi riferirti al tuo frameset con opener.top.elenco etc etc
Ok mi spiego meglio, ho ripulito il codice il piu possibile, spero di non
aver introdotto errori di battitura
Dalla popup mi limito a riempire l'array e piu o meno é questa
-------------------------------
<script>
function aggiungiElenco(riferimentoArticolo)
{window.creator.top.elenco[window.creator.top.elenco.length]=new
aggiungi(riferimentoArticolo);
}
function aggiungi(riferimento)
{this.riferimento=riferimento;}
</script>
</head>
<body>
<form>
<input type=text name='Riferimento' value=''>
<input type=button value='Aggiungi all elenco'
onClick='aggiungiElenco(this.form.Riferimento.value)'>
</form>
-------------------------------
dove io faccio riferimento al frameset che crea la popup
Le righe
-------------------------------
if (parent.top.elenco[z].nome!="")
{ 
-------------------------------
sono nello script che legge l'array e questo é contenuto nel frameset, non
nella popup
Cosa faccio?


Probabilmente è perché siamo a Lunedì mattina, ma non riesco a capire cosa
fai...
Se devi eseguire l'intera function, contenuto nel frameset, da una popup:
opener.top.nomefunction() dovrebbe andare;
Se invece la function è nella popup ma l'array è nella pagina con frameset,
per riferirti all'array come sopra:
opener.top.nomearray[opener.top.nomearray.length] = ......

 
La seconda che hai detto, l'array si chiama "elenco" e si trova nella pagina
Top dove sono descritti i frame, io ho scritto
window.creator.top.elenco[window.creator.top.elenco.length]
ma anche con
window.opener.top.elenco[window.opener.top.elenco.length]
il risultato é uguale
Piuttosto fatico a capire come sia possibile eseguire una function contenuta
in un'altra pagina, io avevo fatto uno script esterno che poi richiamavo con
src="file.js". Pensavo che forse volendo popolare l'array da una finestra
diversa da quelle che contiene l'array stesso magari il dato nel passaggio
viene corrotto, se riuscissi a lanciare una function contenuta nella pagina
dell'array forse il problema si risolve
Ci provo


Attenzione: il frame si chiama "Top"?
Perché come mi riferisco io, top indica il frame piů "alto", non un frame
che si chiama top...
opener.top.frames['Top'].nomefunction(); => dovrebbe chiamare una function
che si trova nel browser che ha aperto la tua popup, dentro un frame che si
chiama 'Top'

 
No per top intendo la pagina piu alta che contiene i tag
<frameset></frameset> che oltretutto un nome non ce l'ha e nel dubbio la
posto cosi vedi anche l'array
Comunque ho provato anche a mettere l'array nella pagina titolo e fare
riferimento a quel frame cosi
window.creator.titolo.elenco[window.creator.titolo.elenco.length]
ma la storia e sempre quella
Per notizia ho provato a lanciare una function del frameset dalla popup ma
non si lancia proprio niente
Adesso provo a fare
window.creator.frames[titolo].elenco[window.creator.frames[titolo].elenco.le
ngth] pero sono scettico, per me piu preciso di top non c'era niente
---------------------------------------------------
<html>
<head>
<title>frameset</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
var elenco=new Array()
</script>
</head>
<frameset rows="*" cols="131,610*" frameborder="NO" border="0"
framespacing="0"> 
  <frame name="indice" scrolling="NO" src="indice.html" noresize
frameborder="NO" marginwidth="0" marginheight="0">
  <frameset rows="118,378*" frameborder="NO" border="0" framespacing="0"
cols="*"> 
    <frame name="titolo" noresize scrolling="NO" src="titolo.html"
marginwidth="0" marginheight="0" frameborder="NO">
    <frame name="istruzioni" src="istruzioni.html" noresize scrolling="YES"
marginwidth="0" marginheight="0" frameborder="NO">
  </frameset>
</frameset>
<noframes>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0"
marginheight="0">
</body></noframes>
</html>
---------------------------------------------------


insisto: se la function si trova nel top della pagina che definisce il
frameset dovrebbe funzionare (chiamando la function dalla popup)
opener.top.nomefunction();
(in realtà non mi è mai capitato di usare questa precisa sintassi, ma non
vedo il perché non dovrebbe andare: opener è un oggetto window normalissimo
che io sappia)

 
Ritiro tutto
Lanciare una funzione presente in un frameset da una popup funziona anche se
sono riuscito a fare riferimento solo al top e non ai singoli frame
E devo dire che anche l'array si popola correttamente
Questa scoperta mi apre nuovi orizzonti, é possibile in questo modo
richiamare un solo file .js e poter eseguire funzioni da qualunque frame o
popup interessata; Mooolto interessante
Grazie dell'aiuto, incominciavo a vedermela  brutta
