Newsgroup: it.comp.lang.javascript
Titolo: delay simulato

Vorrei fare aprire un banner dopo un tot di secondi dall'apertura della 
pagina e cercando qua e la ho messo assieme quanto segue.
Per funzionare funziona solo che io volevo che caricasse la pagina 
principale e dopo 10 secondi aprisse il banner e  invece inizia il 
caricamento della pagina ma di fatto lo completo  solo dopo che e 
trascorso il timeout del banner facendo vedere home e banner assieme! 
(questo com mozilla).
Come posso risolvere ?
Grazie
MB
segue codice :
<script language="javascript">
<!--
  function pause(numberMillis) {
         var now = new Date();
         var exitTime = now.getTime() + numberMillis;
         while (true) {
             now = new Date();
             if (now.getTime() > exitTime)
                 return;
        }
  }
function PopUp(){
  pause(10000);
  msg=open("
http://www.miosito.com/popup/popup.php
", "PopUpWindow", 
"toolbar=no, directories=no, menubar=no, width=170, height=340, 
resizable=no");
}
// -->
</script>
e richiamo :
<BODY onLoad="javascript:PopUp();">

 - cancella la function Pause;
 - function popup: lascia solo l'Open;
 - body: onload='setTimeout("Popup()",10000)';

 Come posso risolvere ?
L'effetto da te riscontrato si spiega facilmente:
Un ciclo in uno script, "congela" di fatto l'esecuzione della pagina finche'
esso non e' finito. Questo significa che nessun'altra azione, sia a livello
di script sia a livello di "rendering" della pagina, viene fatta.
In sintesi, la pagina viene mostrata solo dopo che lo script e' terminato,
perche' prima il browser e' "impossibilitato" ad aggiornare la videata, per
cosi' dire, in quanto e' "occupato" a eseguire il codice che tu gli hai
detto.
Spero di esser stato chiaro, nonostante il sonno incombente che mi assilla
^^"
Lo script che cerchi tu, invece, e' il seguente:
function PopUp(){
    msg=open("
http://www.miosito.com/popup/popup.php
", "PopUpWindow",
"toolbar=no, directories=no, menubar=no, width=170, height=340,
resizable=no");
}
<BODY onload="setTimeout('PopUp();',10000);">
In questo modo, DOPO il caricamento della pagina, aspetta 10.000
millisecondi (ovvero 10 secondi) prima di eseguire la funzione "PopUp()".
setTimeout serve appunto a questo. Ad eseguire del codice, passato un certo
lasso di tempo espresso in millisecondi. Ti consiglio di guardarti la
reference del linguaggio, e di dare un occhiata anche alla funzione
setInterval(), per maggiori approfondimenti.
--------------------------------
Inviato via 
http://usenet.libero.it

già che ne parliamo...
il setInterval, setTimeout accettano un intero.
ma fino a 32000 e qualcosa o 65000 e qualcosa?
grazie


http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/ref
erence/methods/setTimeout.asp
Dice che è un integer...intenderà quindi 64K, immagino (il significato di
integer varia a seconda del linguaggio...)

appunto....
oramai nn ci capisco + nulla!... devo decidermi a fare un corso per pizzaioli e
mollare la programmazione :-pp


Scusate ma non conosco Javascript praticamente per niente (di solito non 
lo uso mai)
Molte Grazie a tutti e due
Siete stati davvero molto gentili.
MB

 mollare la programmazione :-pp
Io so fare la pizza, se hai bisogno... :-)

avevo provato e 65000 mi funzionava.. ma poi mi è sorto un altro dubbio:
funziona sol con IE?
non ho provato ma non credo...
resta che è un macello!


 ma fino a 32000 e qualcosa o 65000 e qualcosa?
No, il setInterval e setTimeout necessitano come parametro un "valore
numerico" o una "stringa numerica", non un intero nel senso di tipo
"integer".. ricordati che JS non e' tipizzato.
In teoria potresti quindi assegnare fino al massimo numero rappresentabile
da JS (dato da Number.MAX_VALUE), in pratica non arrivi fin la' ad eseguire
dei calcoli. Se la memoria non m'inganna, in qualche vecchio post con Adrea
Scartabelli, si e' visto che raggiunto un certo valore le operazioni
matematiche sui numeri (tipo la somma) non hanno piu' "effetto".


Sě, fino a 65000 funziona con IE senza problemi

Su msdn specifica "Integer"...cosa intenda, poi, è tutto da capire

 cosa intenda, poi, è tutto da capire
Suppongo intenda un valore "intero", cioe' non con virgola mobile.
Se continuiamo a leggere sull'MSDS, cmq, vediamo come l'API del setTimeout
su Windows platform, prende come parametro in entrata un long, ovvero un
intero a 32 bit, ergo il valore massimo che puoi dare dovrebbe essere, se
unsigned, 2^32, ovvero 4294967296.


 unsigned, 2^32, ovvero 4294967296.
Ho appena controllato ed il valore che JScript (testato su IE, quindi.. le
MSDS si riferiscono alle API di quell'engine, ovviamente) prende in entrata
e' un long signed, non unsigned.
Quindi il valore massimo e' 
2147483647
.
