PDA

View Full Version : javascript mi serve un modo per determinare se un file esiste o meno sul server


Cionno
10-10-2006, 23:14
sto costruendo una picoola gallaria immagini divisa in sottocartelle,
nn dispongo di php et similia quindi javascript (lo so che è na tarantella essendo client side) per ora lo vedo come unica soluzione.

l'aspetto è ok solo che vorrei automatizzare un po le cose x evitare di dover andare a cambiare ogni volta i file manualmente

in ogni sottocartella ho un file che contiene il cntenuto della sottogalleria
e i file di immagine sono numerat in ordinamento crescente

attualmente ho uno script che genera tanti <td> in tabella con le thumbnails associate all'immagine ingrandita in base a una variabile il cui valore scrivo io in base a quante immagini so che ci sono nella cartella

un do...while x intenderci

vorrei evitare di immettere xò ogni volta questa variabile manualmente in ogni html di ogni cartella

e mi servirebbe un modo per definire se un file non esiste ovvero la procedura dovrebbe creare un td per volta prendendo le immagini in ordine crescente finchè non trova che non c'è l'immagine...

nn so se mi sono spiegato correttamente

spero che esista un modo

allego l'html del test

grazie a tutti in anticipo

cionci
11-10-2006, 15:56
Non puoi, javascript è eseguito client side, magari si può fare qualcosa con AJAX, ma su questo non ti posso aiutare...

Cionno
11-10-2006, 16:36
ho risolto parzialmente con questo script


<script>
imgt = 0;
hgt = 0;
imgt = new Array();
hgt = new Array();
imgt[1] = new Image()
imgt[1].src = "1_tn.gif"
hgt[1] = imgt[1].height;

for (i=1; hgt[i] > 30 ; i++) {
imgt[i+1] = new Image();
imgt[i+1].src = (i+1)+"_tn.gif";
document.write('<td width="100px" height="100px" nowrap="nowrap" align="center" style=" padding-bottom:1px; width:100px; background-image:url(../elements/albumt.gif); background-position:top center; background-repeat:no-repeat"><img src="'+i+'_tn.gif" align="middle" border="0" id="thb'+i+'" onClick="MM_changeProp(\'holder\',\'\',\'src\',\''+i+'.jpg\',\'IMG\')"></td>');
hgt[i+1] = imgt[i+1].height;


}

</script>

ma sia ie che firefox caricano un'immagine alla volta ad ogni refresh (F5) fino all'ultima immagine

lo script fa il suo dovere cioè si rende conto che l'ultima immagine in sequenza ha dimensione non sufficiente...

ho provato anche con una dummy function per permettere il completamento del caricamento dell'immagine tramite imgt[i].src tramite analisi della proprietà img[i].complete

ma a volte con ie funzia, a volte si impalla in loop , ffox si impalla e basta...

in particolare con questo nel for immediatamente dopo il "preload" della thumbnail:

do {
setTimeout (function dummy() { ; }, 100);
} while (!imgt[i].complete);

ma nn capisco perchè nn va...










altrimenti anche questo andava abb bene ma fa lo stesso difetto...

<!--
<script>
var i=1;


do {
document.write('<td width="100px" height="100px" nowrap="nowrap" align="center" style=" padding-bottom:1px; width:100px; background-image:url(../elements/albumt.gif); background-position:top center; background-repeat:no-repeat"><img src="'+i+'_tn.gif" align="middle" border="0" id="thb'+i+'" onClick="MM_changeProp(\'holder\',\'\',\'src\',\''+i+'.jpg\',\'IMG\')"></td>');
var hgt = (document.getElementById('thb'+i)).height;
i++;
}
while(!(hgt < 30))
</script>
-->

e comunque genera un ultimo segnaposto vuoto in quanto determina la dimensione dell'immagine dopo il caricamento della stessa (anche se questa nn esiste ed è il caso dell'ultima che risulta vuota)...

Cionno
11-10-2006, 17:39
giusto a titolo di esempio...

www.gx3.virtuale.org/working/photo/2002/dn.html

se premete (f5) caricherà fino a tre foto... (quelle che sono nella dir)