Newsgroup: it.comp.lang.javascript
Titolo: due cosette sui popup..

ciao ragazzi :)
avrei due domandine per chi ne sa un pò più di me && mi vuol rispondere :)
1.
come faccio a portare sempre in primo piano una popup?
esempio pratico: nella pagina principale ho più immagini thumbnail che, se
cliccate, rimandano a dei popup (richiamano la funzione popup() ed hanno
target="popup" quindi..)
ora vengo al punto: TUTTE hanno target popup, ciò vuol dire che, se lasciata
aperta la finestra che si apre, le immagini di volta in volta si
caricheranno entro la stessa MA..il 'focus' ce l'ho sulla pagina *fissa*
quando apro nuove immagini nel popup già aperto :(( come faccio a portarlo
TOP in ogni caso?
avevo pensato a questo script facile facile che avevo visto..
if (window != top)
        top.location.href=location.href
purtroppo dopo un pò di tentativi ancora non ho ottenuto quel che volevo :((
2.
(sempre popup, sempre immagini si aprono al loro interno)
i popup li apro a centro pagina mediante uno script che me lo ricava MA ogni
qualvolta io apra una nuova immagine (in popup già aperto) la posizione a
schermo del popup stesso rimane invariata..
vi piazzo lo script che ho fatto
<script type="text/javascript">
<!--
var miafinestra
function popup(nomefile, larghezza, altezza)
{
cw = screen.width;
ch =screen.height;
x = (cw/2) - (larghezza/2);
y = (ch/2) - (altezza/2);
miafinestra =
window.open(nomefile, 'popup',
'top='+y+',left='+x+',width='+larghezza+',height='+altezza+',toolbar=0,locat
ion=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,copyhistory=
0');
miafinestra.document.writeln('<HTML><HEAD><TITLE>titolo</TITLE></HEAD><BODY
topmargin="0" leftmargin="0" marginwidth="0" marginheight="0">')
miafinestra.document.writeln('<IMG src="'+nomefile+'" width='+larghezza+'
height='+altezza+'>')
miafinestra.document.writeln('</BODY></HTML>')
<<<qui poi ho messo una cosa per ridimensionare la finestra a seconda
dell'immagine>>>
if (larghezza != x && altezza != y)
miafinestra.window.resizeTo(larghezza,altezza)
<<<ora arriva il dilemma>>>
if ((cw/2) - (larghezza/2) != x && (ch/2) - (altezza/2) != y)
miafinestra.window.moveTo(x,y)
}
file://-->
</script>
non mi dà errori lo script ma..non ottengo ciò che voglio :(
grazie infinite a tutti
bye
P@pox

 grazie infinite a tutti
prego.
Ciao, Antò.

 Ciao, Antň.
ciao
grazie ancora
P@pox

Papox,
ci ho perso un pň di tempo ma il moveTo non sono riuscito a farlo 
funzionare, sperň ti aiuti qualcuno piů esperto, nel frattempo puoi ovviare  
modificando il tuo script cosi:
<script type="text/javascript">
<!--
var miafinestra = null;
function popup(nomefile, larghezza, altezza) {
if (miafinestra!=null) miafinestra.close();
cw = screen.width;
ch =screen.height;
x = (cw/2) - (larghezza/2);
y = (ch/2) - (altezza/2);
miafinestra= window.open(nomefile, 
'popup','top='+y+',left='+x+',width='+larghezza+',height='+altezza+',toolba
r=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,co
pyhistory=0');
miafinestra.document.writeln('<HTML><HEAD><TITLE>titolo</TITLE></HEAD><BODY 
topmargin="0" leftmargin="0" marginwidth="0" marginheight="0">');
miafinestra.document.writeln('<IMG src="'+nomefile+'" 
width='+larghezza+'height='+altezza+'>');
miafinestra.document.writeln('</BODY></HTML>');
}
//-->
</script>
Ciao, Antň.

ti ringrazio molto Antň :)
se si potesse evitare di chiudere e riaprire il popup sarebbe ancora meglio,
cmq anche cosě mi va bene ;-))
bye bye a buon rendere
P@pox

 
Ci sono tre errori nel tuo script, tutti e tre di logica.
Questo è il tuo script (ho tagliato i document.write() per non 
incasinare il post...)
Ho iniziato le righe che contengono errori con --n-- dove "n" è un 
numero:
<script type="text/javascript">
<!--
var miafinestra
function popup(nomefile, larghezza, altezza)
{
cw = screen.width;
ch =screen.height;
x = (cw/2) - (larghezza/2);
y = (ch/2) - (altezza/2);
miafinestra =
--1-- window.open(nomefile, 'popup', .... ,resizable=0, ...');
miafinestra.document.writeln('[....]')
miafinestra.document.writeln('[....]')
miafinestra.document.writeln('[....]')
--2--if (larghezza != x && altezza != y)
miafinestra.window.resizeTo(larghezza,altezza)
--3--if ((cw/2) - (larghezza/2) != x && (ch/2) - (altezza/2) != y)
miafinestra.window.moveTo(x,y)
}
//-->
</script>
Errore n. 1
NON puoi dire resizable=0 e poi pretendere di ridimensionarla. Tu mi 
dirai "a me la ridimensionava", certo, ti rispondo io, ma tu usi 
MicroZoZZ InterDet ExploDer che le cose le fa a modio suo,grazie a dio 
non lo usano; a me per esempio con NetsCAFE' non ri ridimensionava un 
bel nulla. La soluzione è: "resizable=1".
CONSIGLIO: usa "yes" per "1" e "no" per "0", è più corretto e... ti 
capisci megliio... :-)
Errore n. 2
Ha pensato a cosa succede se una sola delle due dimensioni è diversa?
La soluzione è usare questa sintassi:
      if (larghezza != x || altezza != y)
che fa scattare la condizione se anche na sola delle due dimensioni è 
errata.
Errore n. 3
A parte il fatto che anche qui dovresti usare "||" cioè "OR" invece di 
"&&" (AND):
    if ((cw/2) - (larghezza/2) != x || (ch/2) - (altezza/2) != y)
anche questa condizione non può scattare mai (ecco perché non funzionava 
nemmeno ad Antò, perchè nella prima parte dello script tu fai:
   x = (cw/2) - (larghezza/2);
   y = (ch/2) - (altezza/2);
quindi la condizione "!=" dell'if non sarà mai verificata.
La soluzione è memorizzare da qualche altra parte le dimensioni della 
finestra "precedente", quindi ti crei due altre variabili globali (io le 
ho chiamate "lastX" e "lastY", e di volta in volta confronti "x" con 
"lastX" e "y" con "lastY", se una delle due è diversa (OR) sposti la 
finestra.
Lo script che segue è il tuo con le correzioni che ti ho segnalato, e 
con in più il "focus()" che ti ha suggerito Antò.
Un'altra aggiunta che ho fatto è
   miafinestra.document.close();
che chiude il documento aperto. Questo sarebbe superfluo anche pet 
Netscafé, ma logica lo vuole... e non ci costa niente in fondo... :-)
Ovviamente l'ultima condizione (quella che comanda il moveTo()) scatta 
anche alla prima apertura, perché le due variabili, pur se dichiarate 
nello script, alla prima esecuzione della funzione non sono ancora 
valorizzate.
L'ho provato e funziona perfettamente:
<SCRIPT TYPE="TEXT/JAVASCRIPT">
<!--
var miafinestra,lastX,lastY;
function popup(nomefile, larghezza, altezza)
{
cw = screen.width;
ch =screen.height;
x = (cw/2) - (larghezza/2);
y = (ch/2) - (altezza/2);
window.open(nomefile, 'popup', .... ,resizable=yes, ...');
miafinestra.document.writeln('[....]')
miafinestra.document.writeln('[....]')
miafinestra.document.writeln('[....]')
miafinestra.document.close();
miafinestra.focus();
if (larghezza != x || altezza != y)
	miafinestra.resizeTo(larghezza,altezza);
if (lastX != x || lastY != y)
	{
	miafinestra.moveTo(x,y);
	lastX=x;
	lastY=y;
	}
}
//-->
</SCRIPT>
Ciao e alla prossima.
-- 
Ciao, Riccardo
------------------------------------------------------------------------
WebMaster: ----> 
http://www.jsdir.com
 <---- (aka 
http://www.jspoint.it
)
              All the JavaScript you need
------------------------------------------------------------------------
               Nessun traguardo è abbastanza lontano.
------------------------------------------------------------------------

 ------------------------------------------------------------------------
bella questa! :))
<se non vedi il tramonto può darsi sia ancora l'alba..>
pp