Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Community > Forum De Bell Tolls
 
[JAVASCRIPT] Pause in un ciclo while
Clicca QUI per vedere il messaggio nel forum
JaM
Ho uno javascript che deve generarmi una finestra delle dimensioni di una foto.
A volte capita che il precaricamento della foto non sia immediato e cosi' ottengo una finestra di dimensioni sbagliate (le dimensioni della foto precedente)

Ho fatto allora queste due funzioni, che vengono richiamate in sequenza con un onClick:
code:
var counter, photourl, mod, flag; var photo = new Image(); function defineVars(a,b) { counter=10; flag=true; photourl=a; mod=b; photo.src=(photourl); } function createNewWindow() { while(flag) { if (photo.complete) { newWindow = window.open("","","width="+photo.width+",height="+photo.height); if (newWindow != null) { newWindow.document.write("<HTML>...</HTML>"); flag=false; } } else { if (counter>0) { counter--; /*QUA DOVREBBE ESSERCI UNA PAUSA*/ } else { alert("Image load error"); flag=false; } } } }

Come faccio a farlo attendere un tot ad ogni ciclo prima di ricontrollare se l'immagine e' caricata?
Cercando in giro ho trovato solo le funzioni setTimeout(func, seconds) e setInterval(func, seconds), ma entrambe vogliono come parametro un'altra funzione da richiamare dopo un certo numero di secondi e io non voglio usare questo metodo. Infatti se la funzione ne richiama un'altra o richiama se stessa la popup viene bloccata da sistemi come la google toolbar perche' riconosciuta come "popup non richiesta".

fulminato1
io ho usato questo script nel mio sito per aprire le foto in pop up. dentro al filmato flash c'è un movieclip che premuto richiama questa funzione di javascript, apre un pop up delle stesse misure della foto, e clikkando sulle foto successive kiude automatikamente la precedente.dovrebbe funzionare anke kon i blokka popup, a me la prima foto la apre, se però cerco di aprirle in sequenza ne apre una si e una no.non so se sono stato kiaro, provale e vedi!

code:
function ViewImage(ifile,ix,iy,ititle) { var win; var sWidth; var sHeight; ix+=10; iy+=10; var NS = (document.layers) ? 1 : 0; win = window.open(ifile,"imageviewer","width="+ix+",height="+iy+",menubar=no,toolbar=no"); if (NS) { sWidth = win.innerWidth; sHeight = win.innerHeight; } else { sWidth = win.document.body.clientWidth; sHeight = win.document.body.clientHeight; } if(sWidth!=ix || sHeight!=iy) { win.close(); setTimeout("ViewImage('"+ifile+"',"+ix+","+iy+",'"+ititle+"')", 250); return; } win.document.open(); win.document.write("<html><head><title>"+ititle+"</title>"); win.document.write("</head><body>"); win.document.write('<div style=" position:absolute;width:'+ix+'px;height:'+iy+'px;l eft:0px;top:0px">'); win.document.write("<img src="+ifile+"></div></body></html>"); win.document.close(); }

JaM
uhm... piu' tardi provo..

pero' usi il setTimeout, a me era proprio quello che dava problemi con il blocco popup della google toolbar...

e poi non vedo una creazione di un oggetto Image... quindi tu gli passi gia' l'oggetto precaricato da flash e quindi non hai problemi di ritardo nel preload....

JaM
dal forum di html.it mi dicono che non si puo' fare una pausa e basta (la soluzione sarebbe far andare il counter tipo a 1000 invece che a 10, ma e' urenda e blocca il browser per tutto il tempo).... e una funzione ricorsiva non va bene per il blocco delle popup...
mi sa che dovro' passare le dimensioni come parametri ogni volta....

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate