Newsgroup: it.comp.lang.javascript
Titolo: ?: refresh di una variabile

Ciao.
Ho questo script...
// inizializzo le variabili
var xx =0;
var yy =0;
// imposto la funzione che recupera dimensioni della finestra
function PassFlash(){
  var xx = window.innerWidth;
  var yy = window.innerHeight;
}
...quindi le funzioni...

Scusate, ho inviato per sbaglio senza completare....  :-P
Ho questo script...

...quindi le funzioni...
onLoad="PassFlash()" onresize="PassFlash()"
...e fra i tag BODY...
<script language = "JavaScript">
document.write(
'<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="movie"'
+'codebase="
http://download.macromedia.com/pub/shockwave/cabs/flash/swflash
.
cab#version=5,0,0,0"'
+'WIDTH=200 HEIGHT=100>'
+'<PARAM NAME=movie VALUE="test.swf?aa='+yy+'">'
+'<PARAM NAME=quality VALUE=high>'
+'<PARAM NAME=bgcolor VALUE=#FFCC99>'
+'<EMBED src="test.swf?aa='+yy+'" quality=high bgcolor=#FFCC99  WIDTH=200
HEIGHT=100 NAME=movie TYPE="application/x-shockwave-flash"
PLUGINSPAGE="
http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_
Version=ShockwaveFlash"></EMBED>'
+'</OBJECT>'
)
</script>
...questo script che rigenera tutto il codice necessario alla pubblicazione
di un filmato Flash.
IL PROBLEMA E' CHE la variabile yy (che è quella importante) rimane sempre
con il valore iniziale di 0, e non si aggiorna ne onload ne onresize.
Un aiuto?
Grazie!
--
saluti,
DoZ
http://www.dozarte.com
Grafica e Illustrazione.

lo script fra il body viene eseguito PRIMA dell'onload o onresize => il
valore è correttamente 0.
Devi quindi usare il document.write all'interno della function PassFlash
(dopo aver settato yy)


Ok, grazie.
Ho seguito il tuo consiglio, e va.
Però va solo una volta, ovvero solo quando apro il file!!
Nemmeno se faccio "refresh"! Solo onLoad!!!
Se c'è un altro aiuto, vi incollo il codice in calce.
p.s.: ma si può passare una variabile definita in una funzione all'esterno
di tale funzione?
--
saluti,
DoZ
http://www.dozarte.com
Grafica e Illustrazione.
****************************************
<HTML>
<HEAD>
<TITLE>test</TITLE>
<script language = "JavaScript">
<!--
var xx =0;
var yy =0;
function PassFlash(){
  if (document.layers){
  // calcola grandezza e altezza finestra per netscape 4.x
  var xx = window.innerWidth;
  var yy = window.innerHeight;
 }
 else{
  if(window.sidebar){
  // calcola grandezza e altezza finestra per netscape 6.x
  var xx = window.innerWidth;
  var yy = window.innerHeight;
 }
 else{
  // calcola grandezza e altezza finestra per Internet Exploder 5.x
  var xx = window.document.body.clientWidth;
  var yy = window.document.body.clientHeight;
 }
 }
document.write(
'<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="movie"'
+'codebase="
http://download.macromedia.com/pub/shockwave/cabs/flash/swflash
.
cab#version=5,0,0,0"'
+'WIDTH=200 HEIGHT=100>'
+'<PARAM NAME=movie VALUE="test.swf?aa='+yy+'">'
+'<PARAM NAME=quality VALUE=high>'
+'<PARAM NAME=bgcolor VALUE=#FFCC99>'
+'<EMBED src="test.swf?aa='+yy+'" quality=high bgcolor=#FFCC99  WIDTH=200
HEIGHT=100 NAME=movie TYPE="application/x-shockwave-flash"
PLUGINSPAGE="
http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_
Version=ShockwaveFlash"></EMBED>'
+'</OBJECT>'
)
}
//-->
</script>
</HEAD>
<BODY onLoad="PassFlash()" onResize="PassFlash()">
</BODY>
</HTML>

 di tale funzione?
Ho notato, guardando il sorgente html della pagina caricata dal browser, che
in effetti quello che si vede è solo il codice "ricostruito" da JS
all'interno di "document.write"; suppongo che siccome la pagina, dopo il
primo onLoad, si riduce a questo, l'erroneo funzionamento sia da attribuirsi
al fatto che manca del tutto la funzione che determina la variabile, oltre
che una funzione di refresh della stessa.
Ho provato ad inserire nel "document.write" tutti i tag mancanti per fare
una pagina completa e un "reload onResize" ma non funziona; se però copio il
codice costruito dal browser in un nuovo documento, onResize funziona.
Richiedo: si può passare una variabile all'esterno di una funzione??


> Richiedo: si può passare una variabile all'esterno di una funzione??
non capisco bene cosa significa...se una variabile è dichiarata globale
(cioè dichiarata al di fuori di una function) è leggibile e settabile in
qualsiasi function
Quindi se dichiara var jj=0; e in una function setti jj++ => jj varrà 1 per
qualsiasi function la utilizzi