Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    preload grafico immagini separate

    Salve a tutti,

    ho fatto una ricerca, naturalmente, prima di postare il presente ed ho visto che ci sono vari preload per immagini che però non sono come preferirei.

    Ci sono, ad esempio, preload grafici per immagini che mostrano la barra di caricamento in un punto della pagina precaricando TUTTE le foto presenti in essa.

    è carino, però vorrei sapere se è possibile dare un preload ad ogni immagine.

    Esempio pratico:
    Ho una tabella composta da 2 righe e 5 colonne; in ogni cella inserisco l'immagine originale ma ridimensionata, per cui è abbastanza pesante.
    vorrei dare ad ogni immagine, la classica ruota che gira come preload.

    una cosa tipo

    "se carica mostra questo, altrimenti mostra quest'altro" (per ogni immagine) si può fare?

    perdonate sempre l'ignoranza

  2. #2
    Beh, il modo più semplice è mettere come src di tutte le immagini la classica immagine di preloading, poi usando Javascript fare caricare le immagini in modo asicrono, sostiuendo il src a conclusione caricamento. (tranquillo: è molto più semplice di quanto sembri ;-P)

    Passo 1: HTML
    Inserisco solo il body, ma tu metterai anche l'head e l'HTML
    Codice PHP:
    <body>
      <
    table width="100%">
        <
    tr>
          <
    td>
            [
    img]imgs/preloading.gif[/img]
          </
    td>
          <
    td>
            [
    img]imgs/preloading.gif[/img]
          </
    td>
          <
    td>
            [
    img]imgs/preloading.gif[/img]
          </
    td>
          <
    td>
            [
    img]imgs/preloading.gif[/img]
          </
    td>
          <
    td>
            [
    img]imgs/preloading.gif[/img]
          </
    td>
        </
    tr>
        <
    tr>
          <
    td>
            [
    img]imgs/preloading.gif[/img]
          </
    td>
          <
    td>
            [
    img]imgs/preloading.gif[/img]
          </
    td>
          <
    td>
            [
    img]imgs/preloading.gif[/img]
          </
    td>
          <
    td>
            [
    img]imgs/preloading.gif[/img]
          </
    td>
          <
    td>
            [
    img]imgs/preloading.gif[/img]
          </
    td>
        </
    tr>
      </
    table>
    </
    body
    Come puoi notare ad ogni immagine ho messo il src a imgs/preloading.gif, tu lo cambierai con la tua immagine di preloading. Inoltre, ogni img ha un attributo rel = la giusta immagine da caricare dopo l'apertura della pagina.

    Passo 2 : Javascript

    Il javascript è molto semplice:
    Codice PHP:
    function setPreloading()
    {
        var 
    imgs document.getElementsByTagName('img');
        for(
    0imgs.lengthi++)
        {
             if(
    imgs[i].getAttribute('rel')){
                var 
    imge = new Image();
                
    imge.setAttribute('index'i);
                
    imge.onload = function(){
                     
    imgs[this.getAttribute('index')].src imge.src;
                }
                
    imge.src imgs[i].getAttribute('rel');
             }
        }
    }
    window.onload setPreloading
    Il funzionamento è il seguente:
    l'ultima riga associa come funzione all'evento onload della pagina la funzione setPreloading.
    la funzione fa innanzitutto una ricerca nel document per tutti gli elementi con tag img (tutte le immagini insomma), poi effettua un ciclo per ogni elemento img, se l'immagine ha l'attributo rel settato ( quel if(imgs[i].getAttribute('rel')) effettua questo controllo ) allora instanzia un oggetto Image (che serve a manipolare le immagini) salvandolo in imge, a questo oggetto setta come attributo index l'indice dell'array di immagini corrispondente all'immagine che deve caricare.
    A questo punto crea una funzione per l'evento onload dell'immagine. Questo semplicemente sostituisce il src dell''immagine corrispondente con l'immagine caricata dall'oggetto imge.
    Infine, setta l'src di imge con il contenuto del rel (l'immagine da caricare) attivando il download della stessa.

    Passo 3: il tutto

    Per farlo funzionare, semplicemente metti il codice che ti ho postato in un
    <script type="text/javascript"> </script>

    Dovrebbe andare: io l'ho provato, anche se con una sola immagine, su Firefox 3, su Opera 9 e IE 7

  3. #3
    dire che sei stato dettagliato quanto volevo è poco! grazie!

    però, a questo punto, ho il seguente problema...

    alle immagini ho gia dato l'attributo rel="..."; (per shadowbox)

    come mi comporto?

    posso dare due "rel" al tag? oppure posso inserire all'interno del codice shadowbox (prima di tutte le funzioni) la funzione che mi hai descritto tu?

    che faccio???...

    (cmq grazie a te ora ho capito anche la funzione "rel" ihihihi

  4. #4
    ho sbagliato... sicuramente non posso mettere quel codice in shadowbox...
    riflettendo non funzionerebbe nella pagina che m'interessa, ma (forse) nello stesso shadowbox (che tra l'altro già ha il preload)...

    penso di aver detto bene... :master:

  5. #5
    anziche rel utilizza... chessò... href

    E modifica lo script dove c'è rel in href

  6. #6
    ho provato tutto ma ho riscontrato il seguente problema;

    se carico "preloading.js" prima di caricare "shadowbox.js", funziona il preloading...
    se viceversa, funziona al contrario...

    insieme non funzionano...

  7. #7
    ok forse ci sono...

    funziona! ho modificato la funzione

    window.onload = setPreloading;

    con

    window.onfocus....


    ---------------------------

    ho fatto bene?... significa che quando ha caricato la pagina intera allora fai questa funzione... giusto??.... ho fatto bene???

  8. #8
    ok... postami esattamente come hai messo il codice

  9. #9
    codice:
    CARICAMENTO SHADOWBOX E PRELOADING IMMAGINI
    
    <script type="text/javascript" src="src/jquery-1.2.6.js"></script>
    <script type="text/javascript" src="src/adapter/shadowbox-jquery.js"></script>
    <script type="text/javascript" src="src/shadowbox.js"></script>
    <script type="text/javascript">
    
    function setPreloading() 
    { 
        var imgs = document.getElementsByTagName('img'); 
        for(i = 0; i < imgs.length; i++) 
        { 
             if(imgs[i].getAttribute('reg')){ 
                var imge = new Image(); 
                imge.setAttribute('index', i); 
                imge.onload = function(){ 
                     imgs[this.getAttribute('index')].src = imge.src; 
                } 
                imge.src = imgs[i].getAttribute('reg'); 
             } 
        } 
    } 
    
    Shadowbox.loadSkin('classic', 'src/skin');
    Shadowbox.loadLanguage('it', 'src/lang');
    Shadowbox.loadPlayer('img', 'src/player');
    
    window.onload = Shadowbox.init;
    window.onfocus = setPreloading;
    
    </script> 
    ATTRIBUTO ALL'IMMAGINE
    
    <body>
    	<a href="originale.jpg" rel="shadowbox" title="originale">		
    		[img]loading.gif[/img]
    </body>

  10. #10
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    non puo' essere corretto,
    onfocus viene richiamato ogni volta che la finestra riceve il focus
    questo avviene con una frequenza notevole
    (non solo minimizzando e passando da un tab/finestra ad un altra)
    e non puo' essere efficace avviare la procedura in oggetto ogni volta

    i due onload andrebbero come minimo accorpati in un unico gestore
    codice:
    window.onload = function(){setPreloading();Shadowbox.init();}
    ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.