Newsgroup: it.comp.lang.javascript
Titolo: da popup ritorno alla finestra madre..

Ciao,
ho questo banele (per voi ) problema:
da una pagina, apro una popup nella quale c'è un form, l'ACTION punta 
alla finestra madre e sul submit devo chiudere la popup e ricarica la 
"mamma". 
Come fo?
Ciao e grazie.
-- 
***  Per E-mail rimuovi ModE dall'indirizzo  ***
  *** Linux user # 198661 --- ICQ 33500725 ***
*** homepage 
http://web.tiscalinet.it/kailed
 ***
            *** Powered by Linux ***

 Come fo?
Un form con tutti i campi HIDDEN nella finestra madre.
Quanto submitti il form della figlia, in realtà no submitti niente, ma ti 
limiti a riportare nei campi hidden della madre i corrispondenti valori 
della figlia, poi dalla figlia fai 
    opener.document.nomeformnascosto.submit()
senza preoccuparti della validazione perché l'hai già fatta nella figlia.
Poi fai self.close() nella figlia e la chiudi.
Il reload della madre è automatico per via del submit()
Questa è l'idea: ora giocaci, ma ti assicuro che funzia :-)
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
 ---- Bring Your Site To Life!!!!
------------------------------------------------------------------------
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
 ----> itALY = it <----

 Questa è l'idea: ora giocaci, ma ti assicuro che funzia :-)
Non lo metto in dubbio, però pensavo fosse decisamente più semplice, mi 
sembra un po' macchinoso.
Comunque, grazie.
Ciao.


 Un form con tutti i campi HIDDEN nella finestra madre.
Piů semplicemente:
<form action="myshop.php" method="POST" target="myshop" 
OnSubmit="setTimeout('window.close()',2000);">
Com'č che ti č "sfuggita"? Ho posto male io la domanda, oppure, come 
spesso capita la soluzione piů semplice č anche quella meno "evidente"?
Ciao.


 spesso capita la soluzione più semplice è anche quella meno "evidente"?
Visto che hai trovato la soluzione più semplice, saresti così gentile da
chiarire quale compito svolge il target="myshop"? che effetto produce?
Non è per caso che adesso hai di fronte due finestre identiche,
sovrapposte, e impossibili da (auto)chiudere se non previo mex di
conferma? 
Molte grazie.
-- 
mailto: y = i
----------------------------------------
Vivo nel terrore di non essere frainteso 
(Oscar Wilde)

 OnSubmit="setTimeout('window.close()',2000);">
Cos'è "myshop" ?


 mex di conferma?
Cazzarola, hai quasi ragione, nel senso che la prima volta apre una 
nuova finestra, le volte successive, sembra funzionare correttamente.
Non ci sono msg di conferma. 
Quel tipo target, l'ho copiato, questo è il codice originale senza il 
window.close():
<form method='post' 
action='negozio.php?id=
2046035148
;articpop=SIGILLO075' target='negozio'>
<input type='text' name='O1' size='5' style='font-size: xx-small' 
value=''>
<input type='IMAGE' SRC='image/b_carrello.jpg' BORDER=0 ALT='Inserisci 
nel carrello' VALUE='' NAME='S1'>
<input type='hidden' name='A1' value='SIGILLO075'>
<input type='hidden' name='D1' value='Scritti di sociologia e teoria 
politica'>
<input type='hidden' name='P1' value='32000.0000'>
<input type='hidden' name='Q1' value='100'>
</form>
Ovviamente solo le parti significative. Credo che si capisca che è una 
pagina generata dal php.
La pagina "mamma" ricaricandosi aggiunge i prodotti al carrello.


 Non ci sono msg di conferma. 
Non ci sono perché la chiudi (se la chiudi, naturalmente) cliccando sul
pulsante di chiusura; volendo far scomparire la finestra madre in
automatico (che poi sarebbe l'unico modo per rendere "indolore" il tuo
procedimento) li avresti eccome. 
A mio avviso sei andato un po' di fretta nel dar fiducia alla "soluzione
semplice"; la vera soluzione te l'ha data Riccardo, essenziale e
ingegnosa.
Con simpatia ;-)


 essenziale e ingegnosa.
Però, correggimi se sbaglio, nel pezzo di codice che ho postato 
nell'altro msg, non mi sembra che ci sia la soluzione di Riccardo.
Che dici?


 nell'altro msg, non mi sembra che ci sia la soluzione di Riccardo.
Certo, il suo metodo era un'altro infatti.
Allora Daniele, lo facciamo o non lo facciamo questo tentativo? Se lo
facciamo eccoti un po' di codice, così ti accorgi di quanto fila liscio:
popup:
=======================
<html><head>
<script language="javascript">
function Invia() {
window.opener.document.autentico.elements[0].value=document.fitForm.fitt
izioO1.value;
window.opener.document.autentico.submit();
self.close();
}
</script>
</head>
<body>
<form name="fitForm"> // NON aggiungere action, method e target
<input type='text' name='fittizioO1' size='5' style='font-size:
xx-small' value=''>
[...]
<input type='button' name='b' value="Invia" onClick="Invia();">
</form></body></html>
madre:
=======================
<form name="autentico" method='post' 
action='negozio.php?id=
2046035148
;articpop=SIGILLO075'>
<input type='hidden' name='O1' value=''>
[...]
</form>
A occhio mi pare vada bene, ma l'ho solo scritto, non provato. PROVALO
TU, E RICREDITI! ;-)


 nell'altro msg, non mi sembra che ci sia la soluzione di Riccardo.
Eh?
Quale pezzo di codice?


 liscio:
Io ti ringrazio infinitamente, ma ripeto, vorrei capire come funziona 
quell'altro metodo che parrebbe non utilizzare javascript.
non ho niente contro il javascript, ma utilizzarlo quando non serve non 
mi sembra il massimo...
Ciao e ancora grazie.


 Quale pezzo di codice?
Quel target "strano" lo copiato ed è perfettamente funzionante 
(l'originale..), lo riporto:
<form method='post' 
action='negozio.php?id=
2046035148
;articpop=SIGILLO075' target='negozio'>
<input type='text' name='O1' size='5' style='font-size: xx-small' 
value=''>
<input type='IMAGE' SRC='image/b_carrello.jpg' BORDER=0 ALT='Inserisci 
nel carrello' VALUE='' NAME='S1'>
<input type='hidden' name='A1' value='SIGILLO075'>
<input type='hidden' name='D1' value='Scritti di sociologia e teoria 
politica'>
<input type='hidden' name='P1' value='32000.0000'>
<input type='hidden' name='Q1' value='100'>
</form>
Ovviamente è tagliato e i vari value sono generati dal php...
Come vedi, non c'è traccia di js, eppure funziona perfettamente.
Non ho niente contro il sistema che mi hai suggerito tu, ma adesso 
vorrei tanto capire come hanno fatto gli "altri".


 
Fai conto che io domani (anzi lunedì :-) prendo un pezzo di un'automobile 
vado dal mio meccanico e gli dico "questo pezzo so che funziona, ma cosa 
ci dev'essere intorno perché lo possa usare"?
Mi sembrava che io, Marco ed altri avessimo già puntualizzato 
perfettamente che questo codice NON PUO' FUNZIONARE in una pop-up aperta 
dal browser, tutt'al più in un frameset o forse con un'altra pop-up in 
giro.
Ora: visto che siamo sì bravini, ma non onniscenti, se almeno ci dici da 
dove l'hai preso 'sto pezzo di codice possiamo cercare di capire perché 
di la funziona e a te no... e non provare nemmeno a postarci la URL di un 
sito a frames! :-))


 URL di un sito a frames! :-))
www.orionlibri.com/negozio
Fai una ricerca, nella colonna centrale ci sono le tabelle con i 
risultati, clicchi sull'immagine e si apre la popup.
Se però non ti registri (registrazione gratuita), le funzioni per il 
carrello non vengono abilitate, cmq, carrello o non carrello, le popup 
sono sostanzialmente uguali.


 sono sostanzialmente uguali.
Tutto Ok!
Se ci facevi vedere subito la URL risolvevamo al volo.
Alla fine della pagina di quel sito c'è questo scriptino:
<SCRIPT LANGUAGE='JavaScript'>
window.status="OrionLibri - bookshop on line";          
window.name
='negozio';
</SCRIPT>
Ovviamente è il "
window.name
" che compie il miracolo! :-)
Prova a salvare queste due pagine:
questa come inizio.html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
	<TITLE>selfname</TITLE>
<SCRIPT>
<!--
window.name
="provariccardo"
function fin()
	{
	window.open("prova.html","","width=200,height=200");
	}
//-->
</SCRIPT>
</HEAD>
<BODY BGCOLOR="#ffffff">
<A HREF="javascript:fin()">apri</A>
</BODY>
</HTML>
C'è 
window.name
 ed una popup che ha questo codice:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
	<TITLE>Untitled</TITLE>
<SCRIPT>
<!--
//-->
</SCRIPT>
</HEAD>
<BODY BGCOLOR="#ffffff">
<FORM ACTION="
http://www.jsdir.com
" TARGET="provariccardo">
<INPUT TYPE="submit" VALUE="invia">
</form>
</BODY>
</HTML>
Questa salvala come "prova.html" (è la popup aperta dall'altra finestra)
Il form è fittizio, c'è solo il submit, ma il funzionamento è quello che 
volevi ^_^


 Se ci facevi vedere subito la URL risolvevamo al volo.
Hai ragione, ma pensavo che la cosa fosse semplice semplice...
Ti ringrazio della spiegazione, ma mi piacerebbe sentire anche un tuo 
parere, cioč come consideri quella soluzione rispetto alla tua...
Giusto per curiositŕ e per capire.


 Ciao.
Beh, no: questa del 
window.name
 è semplicemente una cosa geniale :-))
Anche perché mi fa venire in mente un po' di cosette simpatiche!


 Anche perché mi fa venire in mente un po' di cosette simpatiche!
Bastava chiedere :P
.. del resto i frame sono considerati alla stregua di finestre vere e 
proprie, e non avevi mai notato che se metti un target "sballato" (nel 
senso che non esiste, come frame o altro) lui automaticamente apre l'url 
in una nuova finestra, e la "nomina" secondo il target da te 
specificato? :)
La cosa mi incuriosi' al tempo, e spulciando nella reference di JS vidi 
che "name" era una proprieta' readonly solo in JS 1.0.. :D
.. Ed "giochetti" di questo tipo ce ne sono molti :)
Basta divertirsi come un pazzo a sfruzzicare ogni anfratto delle ref. :)
-- 
C'ya,
ZER0
  :. job profile - coder.gfxer.webDesigner
"Quanti angeli danzano sulla punta di uno spillo?"

 Anche perché mi fa venire in mente un po' di cosette simpatiche!
Buono a sapersi:)
Passo e chiudo.


 e la "nomina" secondo il target da te specificato? :)
Questo no... perché non mi era mai capitato di continuare a riferirmi al 
"frame"


 "frame"
Neanche le prime volte? Devi spippolare di piu' Riccardo, ora ti metto 
sotto torchio.. :P
Scherzi a parte, piccola parentesi sui frame: Mi e' capitato che in un 
sito (in realta' in un forum) che fa uso di un frame di dimensioni "0" 
(il classico frame "nascosto"), ogni tanto lo mostri.
Su IE6, intendo. Con IE5 non lo faceva. Una piccola riga bianca.
Ora, non so se e' il codice farlocchissimo, visto che non l'ho fatto io, 
oppure e' un baco di IE6.. visto anche che non capita sempre.
Volevo sapere se, testando con IE6, ti era capitato di avere problemi di 
questo tipo..
Prima che mi debba scontrare a fare un frame hidden, mi informo su 
eventuali bachi di IE6 visto che l'ho testato il giusto - fosse stato 
per me avrei tenuto il 5.0 e rizzati. :)
