romyna77 ha scritto:
Ciao a tutti,
questo è il mio primo messaggio nel forum
Allora spiego subito il mio problema, voglio fare in modo che cliccando su un pulsante la pagina venga "coperta" da uno sfondo semitrasparente e che appaia un'immagine di loading, per intenderci l'effetto lightbox mentre si attende il caricamento di una foto.
[...]
Se metto un alert questo blocca il tutto finchè non lo chiudo. Ma non riesco ancora a capire perchè se tolgo l'alert non si visualizza più l'immagine di loading e il fondo semitrasparente.
Ciao, ti do una risposta parziale, che potrebbe darti uno spunto
A quanto sono riuscito a decifrare (sì, stento a riconoscere i miei codici, figuriamoci gli altri!) mi sembra che, all'evento onclick sul link, partano una serie di operazioni sequenziali, senza controlli temporali di sorta, almeno nello spezzone principale. Mi spiego: dall'inizio della funzione "mostra" vengono creati e modificati oggetti DOM, e infine essi vengono nascosti:
objOverlay.style.visibility = 'hidden';
tutto di seguito, ciò significa che se nulla ferma il processo, alla velocità del lampo l'oggetto comparirà e scomparirà
Dunque perchè con l'alert si vede, ma quando lo clicchi torna a scomparire?
Perchè l'alert, finchè attivo, tiene in sospeso il processo Javascript. I messaggi come quello o il confirm (messaggio+Ok/Annulla) si aspettano un valore di ritorno, sempre positivo o condizionale, perciò finchè l'alert è attivo, l'esecuzione si ferma e tu vedi gli elementi DOM appena creati... ma nonappena cliccato Ok, l'esecuzione riprende e gli elementi vengono nascosti. Nascosti, non eliminati, perchè di fatto ci sono! Però non si vedono
Per quanto mi riguarda, io opterei per una soluzione più legata al CSS che al Javascript (parlo dei metodi che permettono di coprire tutta la pagina) e poi controlli temporali tipo
setTimeout o qualcosa causato dal caricamento di un'immagine (come da te ricercato) che ha l'effetto non di nascondere ma di rimuovere gli elementi di preload.
Se vuoi potrei pensare ad una soluzione, altrimenti vedi se riesci ad accomodartelo da te, sfidati
Ciao e buona fortuna!