Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    17

    refresh immagine e cache

    prelevo delle immagini dalla webcam e le visualizzo. poi ogni tot secondi faccio un refresh (l'immagine sul server viene aggiornata ogni 3 secondi).

    seleziono la webcam da cui prendere l'immagine e la visualizzo in un tag img.

    con il seguente script aggiorno il src del img.

    function carica() {
    document.camera.src=document.modulo.lista.options[document.modulo.lista.selectedIndex].value;
    x=setTimeout('carica()',5000);
    }


    mi fa vedere sempre la stessa immagine! in pratica mi visualizza quella in cache.

    se aggiorno la pagina con un meta refresh l'immagine cambia...

    come posso fare a che lo script mi 'refreshi' l'immagine?

    grazie

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    se

    codice:
    document.modulo.lista.options[document.modulo.lista.selectedIndex].value
    rappresenta il valore dell'attributo src dell'immagine della tua webcam allora basta appendere ad esso di volta in volta un valore che previene la memorizzazione in cache, ad es.

    codice:
    document.modulo.lista.options[document.modulo.lista.selectedIndex].value + (new Date()).getDate();

    altrimenti posta tutta la pagina
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    17
    la pagina....

    codice:
    <?
    session_start();
    ?>
    <html>
    <head><TITLE>camera1</TITLE>
    <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
    <script language="JavaScript">
    function carica() {
    document.camera.src=document.modulo.lista.options[document.modulo.lista.selectedIndex].value;
    x=setTimeout('carica()',3000);
    }
    </script>
    </head>
    <body background="righe.gif" onLoad="carica();">
    <table border="0" width=100%><TR><TD>
    <form method='post' name='modulo'>
    <?
    
    echo "<SELECT name='lista' onchange='carica1();'>";
             echo "<option value='".$_SESSION["url1"]."'>camera 1</option>";
             echo "<option value='".$_SESSION["url2"]."'>camera 2</option>";
             echo "<option value='".$_SESSION["url3"]."'>camera 3</option>";
             echo "<option value='".$_SESSION["url4"]."'>camera 4</option>";
             echo "<option value='".$_SESSION["url5"]."'>camera 5</option>";
             echo "<option value='".$_SESSION["url6"]."'>camera 6</option>";
             echo "<option value='".$_SESSION["url7"]."'>camera 7</option>";
             echo "<option value='".$_SESSION["url8"]."'>camera 8</option>";
           echo "</SELECT>";
    ?>
    </form>
    </td></tr>
    <td><tr><TD  align="center">
    <img name='camera'>
    </td></tr>
    <tr><TD>
    </TD></TR></table>
    </body>
    </html>
    alla selezione del combo seleziona una sorgente delle immagini.

    queste vengono generate da un software (motion) che salva ogni 3 secondi un'immagine e la invia in FTP ad una cartella.
    quest'ultima è accedibile (brutto termine...) via http e diventa il src della img
    ovviamente l'immagine ha sempre lo stesso nome.

    volevo utilizzare javascript per aggiornare solo l'immagine e non tutta la pagina (non è bello da vedere il refresh se c'è traffico in rete)

    grazie mille

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    aggiungere un timestamp come ti ho scritto prima non ha risolto??

    in generale è sufficiente che tu quando carichi l'immagine
    (ad es. img01.jpg) ci aggiunga un timestamp (in modo da caricare ad es. il file img01.jpg?737032948)

    In questo modo l'immagine non viene posta in cache.

    Il numero lo puoi generare in javascript con il costrutto
    codice:
    (new Date()).getDate()
    dovrebbe quindi essere sufficiente cambiare la funzione carica
    in questo modo

    codice:
    function carica() {
    document.camera.src=document.modulo.lista.options[document.modulo.lista.selectedIndex].value + "?" + (new Date()).getDate();
    x=setTimeout('carica()',3000);
    }
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    17
    intanto grazie per la tua pazienza.

    ho messo il fatidico alert per visualizzare il nome del file e aggiunge alla fine 24 (il giorno) quindi poi lo ripete ed è sempre lo stesso. questo potrebbe essere la causa che non fa cambiare l'immagine.

    non conosco molto bene javascript (ma va??? non si era notato...) ma per mettere sino ai secondi???

    ciao

  6. #6
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    scusami, ho sbagliato io... effetto dell'influenza che non mi dà tregua

    in realta volevo scrivere

    codice:
    (new Date()).getTime();
    Questa restituisce i millisecondi trascorsi dal 1^ gennaio 1970
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    17
    P E R F E T T O !!!

    grazie mille... è un pezzo che cerco di capirci qualcosa...


    se sei curioso il risultato è qui:

    http://hwifi.ath.cx/hal9000

    ciao e a buon rendere

  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Quacosa ancora non va... togli la parte in rosso nell'iframe:

    <SELECT name='lista' onchange='carica1();'>

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    17
    si è vero è un refuso per caricare la camera immediatamente cambiando la selezione invece di aspettare i tre secondi..

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 © 2025 vBulletin Solutions, Inc. All rights reserved.