Newsgroup: it.comp.lang.javascript
Titolo: ...continua dim. finestre di Jacopo Baldi

Ciao a tutti, una settimana fà circa tale Jacopo Baldi aveva sollevato un
problema a riguardo del ridimensionamento di una nuova finestra con
screen.widht e screen.height, a suo dire (e a mio dire) le dimensioni della
nuova finestra non erano perfettamente aderenti allo schermo.
Le risposte del ng. non mi avevano aiutato a risolvere il problema e così ho
deciso di sbatterci la testa da solo.
Ebbene, ecco cosa ho partorito, inserisco qui di seguito il codice di una
pagina che riporta due esempi di new.window con risultati diversi.
Nel body trovate anche delle spiegazioni.
Lo so, lo so forse ho scoperto l'acqua calda, ma è da un pezzo che questo
problema mi tormenta e sarei molto grato se qualcuno potesse
schiarirmi le idee.
Ciao
Massimo
########################################################
<html>
<head>
<title>Prova dimensioni finestre</title>
<SCRIPT language="JavaScript">
<!--
window.status = 'Prova dimensioni finestre';
function dimensione(){
self.resizeTo(screen.width, screen.height);
self.moveTo(0,0);
}
function apri01(){
window.open('','Mia','toolbar=no,width='+(screen.Width)+',height='+(screen.H
eight)+',directories=no,status=yes,menubar=no,scrollbars=no,resizable=no,top
=0, left=0');
}
function apri02(){
window.open('','Mia','toolbar=no,width='+(screen.Width-10)+',height='+(scree
n.Height-48)+',directories=no,status=yes,menubar=no,scrollbars=no,resizable=
no,top=0, left=0');
}
//-->
</SCRIPT>
</head>
<body onLoad="dimensione()">
<p><a href="javascript:apri01();">Finestra 01 (dimensioni errate)</a></p>
<p><a href="javascript:apri02();">Finestra 02 (dimensioni giuste)</a></p>
<p>
Come si puo notare la finestra 01 anche se è ancorata nel punto 0,0 ha
dimensioni che sono più grandi dello schermo, inquanto in basso non si vede
la status-bar e a dx si vede la finestra uscire dal margine del monitor.
</p>
<p>
A questo inconveniente ho provveduto togliendo da "screen.Width" 10px e da
screen.Height 48px ( finestra 02), ma il fatto veramente strano e che la
finestra madre
(quella dove state leggendo) che è autoridimensionante non necessita di
questo espediente per regolarsi perfettamante alle dimensioni dello schermo.
</p>
<p>
Misteri di Javascript o mia incompetenza?<br>
Come è uso dire nel pollaio: "Ai posteri l' ardua sentenza."
</p>
<p>Testato solo su Internet Explorer 5.0 e 5.5<br>
Cosa succede con NS4.x e 6.0 (specialmente a self.resizeTo e self.moveTo)
???</p>
</body>
</html>
####################################################################

 ???</p>
Sotto IE4.01 funziona esattamente come a te su IE5.x
Sotto NN4.7 invece va senza problemi sia all'apertura della pagina che delle 
window.
NN6 l'ho killato e atomizzato un mese fa... non ti so dire! :-)
-- 
Ciao, Riccardo
------------------------------------------------------------------------
WebMaster: ----> 
http://www.jsdir.com
 <---- (aka 
http://www.jspoint.it
)
------------------------------------------------------------------------
               Nessun traguardo è abbastanza lontano.
------------------------------------------------------------------------

mi hai risolto un grosso problema :)
adesso provo !! (magari domani vista l'ora)

 schiarirmi le idee.
[]
Alcune considerazioni  (prove con IE5.0, NS4.51, NS6):
- la grandezza utilizzabile dello schermo si ottiene con
*availHeight**availWidth* (non calcola le eventuali barre di window);
- i parametri *height* e *width* del metodo *open* si riferiscono alla
grandezza di visualizzazione della pagina non della finestra
(diversamente da come dichiarato); in NS4.51 e NS6 corrisponde a
innerWidth non a outerWidth...
- i parametri *outerHeight* *outerWidth* valgono solo per NS4.51 e NS6
- con NS4.51 *resizeTo* modifica la grandezza della pagina non della
finestra, ossia *innerHeight* e non *outerHeight* (diversamente da come
dichiarato);
- con NS4.51 non si puo' modificare la grandezza di una finestra se si
e' specificato *resizable=no*
Una soluzione cross-browser:
------------------
window.status = 'Prova dimensioni finestre';
sh=screen.availHeight;
sw=screen.availWidth;
function dimensione(){
self.moveTo(0,0);
if (document.layers){
 window.outerWidth=sw;
 window.outerHeight=sh;
} else self.resizeTo(sw, sh);
}
function apri01(){
bb=window.open('prova001.htm','Mia','scrollbars=no,resizable=no,outerWid
th='+(sw)+', outerHeight='+(sh)+', directories=no,status=yes,
menubar=no,toolbar=no,top=0, left=0');
if (document.all) bb.resizeTo(sw, sh);
}
function apri02(){
cc=window.open('prova001.htm','Mia','scrollbars=no,resizable=yes,directo
ries=no,status=yes, menubar=no,toolbar=no,top=0, left=0');
if (document.layers){
 cc.outerWidth=sw;
 cc.outerHeight=sh;
} else cc.resizeTo(sw, sh);
}
// -->
</SCRIPT>
</head>
<body onLoad="dimensione()">
<p><a href="javascript:apri01();">Finestra 01 (utilizzo di resizable=no
e outerWidth in open)</a></p>
<p><a href="javascript:apri02();">Finestra 02 (utilizzo di resizable=yes
e outerWidth esterno)</a></p>
<p>
-----------------
Mi sembra che cosi' funzioni.
Saluti, Paolo


Grazie molte Paolo (alias Pippopd), in tutto questo casino sei stato l'unico
a farmi capire qualche cosa, non è da tanto che smanetto in javascript ma il
fatto del cross-browser mi ha già rotto.
Grazie ancora .
Ciao
Massimo