Newsgroup: it.comp.lang.javascript
Titolo: Impostare Width/Height in popup

Salve a tutti!
Ho questo script che analizza la risoluzione
del monitor dell'utente, e fin qui è quello che
voglio, ma vorrei in piu' impostare l'altezza e
la larghezza della popup invece di andare in
fullscreen.
Grazie a chiunque mi aiuti.
<script language="javascript">
 function FullscreenLoad(pagina){
if (window.screen){
var hori=screen.availWidth;
var verti=screen.availHeight;
window.open(pagina,'','width='+hori+',height='+verti+',toolbar=0,status=0,left=0,top=0,left='+(0)+',top='+(0));
}
}
if (screen.width <= 800)
{
var indirizzo = "home800.html";
}
if (screen.width >= 1024)
{
var indirizzo = "home1024.html";
}
</script>
Sul pulsante: <a href="javascript:FullscreenLoad(indirizzo);"> 

 var verti=screen.availHeight;
	var hori=320, verti= 200;
-- 
"Your sin is beyond the grace of God" ~ Ky Kiske

 meglio il problema.
Grazie ZERO per l'immediata risposta.
Scusa se non sono stato chiaro;(
Voglio aprire la pagina in base
alla risoluzione del monitor dell'utente.
Fin qui lo script è perfetto, il problema è che se l'utente
è a risoluzione 800, la popup si deve aprire ad es.700x450,
invece se l'utente è a risoluzione a 1024 o piu' allora la popup deve
essere es.900x700.
Spero di essere stato piu' chiaro;)
ringhios 

 Spero di essere stato piu' chiaro;)
Decisamente :) manca solo un dettaglio: i pixel in meno che vuoi considerare
sono sempre fissi, percentuali o altro? Cambia l'approccio.
Mi spiego. Se tu mi dici che vuoi togliere sempre 100px di larghezza e,
chessò, 50px di altezza è un conto. Basta fare:
	var 	hori = screen.availWidth - 100,
		verti = screen.availHeight - 50;
ed hai risolto.
Se invece mi dici che vuoi togliere, chessò, il 15% della dimensione totale:
	var 	hori = screen.availWidth - ( screen.availWidth*0.15),
		verti = screen.availHeight - ( screen.availHeight*0.15);
Se invece non c'è alcuna regola che definisce le dimensioni, ma è del tutto
arbitraria, va rivista un po' tutta la funzione.
Fammi sapere.


 sono sempre fissi, percentuali o altro? Cambia l'approccio.
Immaginavo:)
Dunque, la pagina che devo aprire contiene un swf.
Per la risoluzione 800 o inferiore l'swf  l'ho pubblicato in % e quindi mi 
si adatta
alla finestra, invece per la risoluzione 1024 o superiori l'swf  l'ho 
pubblicato
a dimensioni fisse.
Quindi suppongo che la situazione è arbitraria e va rivista tutta la 
funzione?
ringhios

 pubblicato a dimensioni fisse.
E per eventuali risoluzioni intermedie? Dispositivi custom, o roba del genere.
Se avessero una risoluzione in larghezza che sta tra 800 e 1024?
Dovresti decidere un eventuale comportamento anche in questo caso, ho visto
che la funzione che usavi non lo contempla.
Potresti decidere di fare, ad esempio, che per risoluzioni inferiori o uguali
a 800 lasci le dimensioni "fullsize" (o poco meno), mentre per risoluzioni
superiori o uguali a 800 (e non 1024) usi dimensioni fisse.



E' quello che vorrei fare;)

 E' quello che vorrei fare;)
Allora diventa:
<script type="text/javascript">
	function fullscreenLoad( url ){
		var w = screen.availWidth, h = screen.availHeight;
 
		if ( screen.width > 800 ){
			w = 800;
			h = 600;
		}
 
		window.open(url, "", 
			"width="+w+", height="+h+",toolbar=0,status=0,left=0,top=0");
	}
</script>
In sostanza: quando la funzione viene invocata, carica l'indirizzo definito
come parametro nella popup, che apre con le dimensioni disponibili SE la
risoluzione non č superiore a 800, nel caso contrario le fissa a 800x600.
Ovviamente i valori sono puramente esemplificativi; e volendo puoi togliere
qualche pixel anche a screen.availWidth/screen.availHeight.
Inoltre, potresti eventualmente pensare di centrarla.
P.S.
Della funzione precedente mi sfugge l'uso che facevi della variabile
indirizzo, che poi avvaloravi a home800.html ma non riutilizzavi.


 indirizzo, che poi avvaloravi a home800.html ma non riutilizzavi.
non conosco javascript,  lo avevo preso da 
html.it
.
ancora grazie
ringhios 

 Magari...chiedo troppo?;)
Riprendendo la funzione:
<script type="text/javascript">
	function fullscreenLoad( url ){
		var w = screen.availWidth, h = screen.availHeight, l = 0, t = 0;
 
		if ( screen.width > 800 ){
			w = 800;
			h = 600;
		}
 
		l = (screen.availWidth - w)>>1;
		t = (screen.availHeight - h)>>1;
		window.open(url, "", 
			"width="+w+", height="+h+",toolbar=0,status=0,left="+l+",top="+t);
	}
</script>
In sostanza una qualsiasi cosa si deve calcolare i valori di left e top in
base alle sue dimensioni e a quelle del contenitore.
Prendi le dimensioni del contenitore (che sono più grandi di ciò che si deve
centrare), sottrai le dimensioni di quello che vuoi centrare, e dividi per
due.
Non ti far spaventare dal ">>", è un operatore. Serve a fare lo shift a destra
di "n" bit. Nel nostro caso, di uno. Nel caso tu non conosca la matematica in
base 2, Il risultato pratico è che il numero che sta alla sua sinistra, viene
dimezzato.
Potevi anche fare:
	(screen.availWidth - w) / 2;
Ovvero dividere proprio per due. Lo svantaggio è che se il numero che ottieni
dalla sottrazione precedente è dispari, il risultato totale sarà un numero con
la virgola; che a livello di coordinate non ha un gran senso.
Mentre usando lo shift, il risultato viene troncato a intero. Ad esempio:
alert( 321 / 2 ) /* 160.5 */
alert( 321 >> 1 ) /* 160 */
 
Storicamente parlando poi, le operazioni sui bit sono più veloci delle normali
divisioni o moltiplicazioni; ma in questo caso le performance non incidono
assolutamente.


 Scusami, mi ero perso questo tuo messaggio.
[cut]..
Mi dispiace che ti ho scritto in privato:(
Che dire un ng davvero atipico;)
persone disponibili e gentili...
Grazie mille!
ringhios 

 Grazie mille!
Di niente, alla prossima.
