Newsgroup: it.comp.lang.javascript
Titolo: opener.top

Ciao a tutti,
ritorno alla mia vecchia problematica.
ho creato questa funzione
function addOption(data,data1) {
    var anOption = document.createElement("option");
    anOption.text = data1;
    anOption.value = data;
    document.getElementById("selectName").options.add(anOption);
}
che mi permette di inserire campi nuovi option dentro una select.
Volevo sapere se dovessi creare il campo option da una popup anziche da se 
stessa,
ho fatto cosi
  opener.top.document.getElementById("selectName").options.add(anOption);
ma mi da errore....
volevo capire una volta su tutte ma quando devo trasferire informazioni tra 
popup non devo indicare opener.top ?
grazie a tutti.

 tra popup non devo indicare opener.top ?
opener è la madre che ha aperto la popup. Se la pagina madre non è 
strutturata a frame, bon, top non serve.
top è il contenitore di tutti i frame.
Quindi, con opener.top, ti riferisci al frame che ha aperto la popup, e 
da lì al contenitore di tutti i frames della pagina; se la pagina non ha 
frames, o se hai aperto dal frame principale, top non serve (ma non 
segnala errore).

"Cristiano Larghi"  ha scritto nel messaggio che errore?
Error: Unspecified error.
e si ferma sul opener 
la pagina non ha frame.... provo a togliere top e lasciare solo 
opener.document.getElementById("selectName").options.add(anOption);
giusto? 

stesso errore anche con
opener.document.getElementById("selectName").options.add(anOption);
senza top
Error: Unspecified error.
"Dario Cudde"  ha scritto nel messaggio 
news:4dff573a$0$44206$4faf...@reader1.news.tin.it...


 Error: Unspecified error.
La sintassi è corretta. L'errore potrebbe essere perché anOption si trova 
nella popup e vuoi aggiungerlo alla madre.
Io, per fare queste cose, metto la function nella *madre* e la invoco 
dalla popup (opener.nomefunction(parametri)), così da evitare problemi.

"Cristiano Larghi"  ha scritto nel messaggio 
news:itnlc6$80m$2...@dont-email.me...
Io, per fare queste cose, metto la function nella *madre* e la invoco
dalla popup (opener.nomefunction(parametri)), così da evitare problemi.
cioè io ho la madre che è questa
<script type="text/javascript">
    function WOpenArticolo(width, height)
     {
        var layout = 'copyhistory=yes, width=' + width + ', height=' + 
height + ',scrollbars=yes';
        window.open('popup.asp', 'info', layout);
    }
</script>
<a href="javascript:WOpenArticolo('300','300')">Crea elemento nuovo </a>
<select id="selectName" name="selectName">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
dentro il file popup.asp (inserisco dei valori)
nell'esempio li passo alla funziona ma poi verrebbero da delle textbox
<script type="text/javascript">
function addOption(data,data1) {
    var anOption = document.createElement("option");
    anOption.text = data1;
    anOption.value = data;
    opener.document.getElementById("selectName").options.add(anOption);
}
</script>
<a href="javascript:addOption('10001','Cristiano Larghi')">CREA COMBO</a>
come dici tu come dovrei fare?

"Cristiano Larghi"  ha scritto nel messaggio
Io, per fare queste cose, metto la function nella *madre* e la invoco
dalla popup (opener.nomefunction(parametri)), così da evitare problemi.
fatto!!!!
è funonzia!!!!
ho modificalo il file popup.asp cosi
<a href="javascript:opener.addOption('10001','Cristiano un grande')">CREA 
COMBO</a>
<a href="javascript:deleteOption()">Cancella COMBO</a>
"Dario Cudde"  ha scritto nel messaggio 
news:4dff5a3a$0$44198$4faf...@reader1.news.tin.it...


 <a href="javascript:deleteOption()">Cancella COMBO</a>
non usare href in questo modo ...
<a href="pagina_se_non_ha_javascript_abilitato" onclick="opener.addOption
('10001','io');return false">CREA</a>

Altra problematica....
subito dopo la chiamata alla funzione opener.addOption
genero un response.redirect
noto che quando metto il response.redirect la script non riesce a creare 
l'elemento option (problemi i velocità di script)
cioè ho testato che il response.redirect agisce prima che la funzione 
javascript abbia terminato il suo corso....
a questo punto, penso, dovrei mettere un leggero rallentamento cioè dopo la 
funzione
opener.addOption dovrei mettere una pausa di 1 secondo e poi continuare con 
il flusso ...ovvero il response.redirect.
per mettere la pausa in javascript ho visto diverse istruzioni cosa mi 
consigliate  voi\tu?
"Cristiano Larghi"  ha scritto nel messaggio 
news:itnq5r$80m$3...@dont-email.me...


 javascript abbia terminato il suo corso....
Sì, ma "agisce" nella popup, mentre la function è nella madre...
Non capisco forse il contesto? E come chiami una function server-side da 
javascript?

Ti spiego con il codice cosi evitiamo di "perdere Tempo" a capire l'italiano 
(a volte, nel mio caso latitante!! :-))
file 1
prova1.asp   (pagina madre)
<script type="text/javascript">
    function WOpenArticolo(width, height)
     {
        var layout = 'copyhistory=yes, width=' + width + ', height=' + 
height + ',scrollbars=yes';
        window.open('prova2.asp', 'info', layout);
    }
function addOption(cValue,cText,NomeSelect) {
    var anOption = document.createElement("option");
    anOption.text = cText;
    anOption.value = cValue;
    document.getElementById(NomeSelect).options.add(anOption);
}
</script>
<a href="javascript:WOpenArticolo('300','300')">Crea elemento nuovo </a>
<br>
<br>
<select id="selectName" name="selectName">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</p>
prova2.asp
<%
if     Request.form("Cerca")= "Cerca"  then
    cValue = "10001"
     cText  = "Cristiano IL GRANDE" %>
    <script type="text/javascript">
        opener.addOption('<%=cValue%>','<%=cText%>','selectName')
    </script>
<%     response.redirect "prova1.asp"
end if
%>
<form method="POST" action="prova2.asp" name="formtutto" id="formtutto">
    <input type="submit"  value="Cerca"  id="Cerca" name="Cerca" >
</form>
Ora, lasciando perdere questo esempio banale dove metto un response.redirect 
senza alcuna funzionalità,
nel progetto dove devo inserire questo script   (opener.addOption) dopo che 
aggiungo l'elemento dentro la select
devo far vedere una pagina dove scrivo che è stato aggiunto un elemento e lo 
devo fare attraverso un determinato file asp (motivo del redirect dentro la 
popup)
Ho verificato che se tra la funzione (opener.addOption)  e il 
response.redirect metto un ciclo javascript tipo da 1 a n
(lo script funziona ovvero trovo "Cristiano IL GRANDE" dentro la select e la 
popup ho il messaggio (elemento aggiunto )
ora mi chiedo anzichè usare un cliclo for (per perdere tempo)  non posso 
mettere una istruzione ad-hoc per "bloccare" il flusso
"Cristiano Larghi"  ha scritto nel messaggio 
news:itpk3s$8gm$1...@dont-email.me...
eh? Quindi server-side con asp? "subito dopo la chiamata" vuol dire
quindi dalla popup?
Non capisco forse il contesto? E come chiami una function server-side da
javascript? 

 %>
Non funzionerà mai: invii qualcosa al client ma, prima che la pagina 
*client-side* sia completata, fai un redirect *server-side*
A naso basta fare tutto client-side:
a) esegui tutto al termine del caricamento della pagina:
 
https://developer.mozilla.org/en/DOM/window.onload
b) richiami la tua function nella opener
c) Cambi href alla popup:
 
https://developer.mozilla.org/en/DOM/window.location