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

    Controllare la data di un file

    è possibile, tramite Javascript, controllare la data dell'ultima modifica di un file che non sia la pagina da cui viene richiamato lo script??

    In pratica devo fare uno script che controlli la data dell'ultima modifica di un file di testo (ciclicamente, con un SetTimeout), e se questa è stata modificata di recente allora esegue un'azione...
    The gate to tomorrow is not the light of heaven but the darkness in the depth of the earth

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    potresti fare una richiesta al file usando l'oggetto xmlhttprequest (fai una ricerca sul forum) e tra i vari header di risposta leggere il "last-modified"
    Vuoi aiutare la riforestazione responsabile?

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

  3. #3
    In che forum devo fare la ricerca?? :master:
    The gate to tomorrow is not the light of heaven but the darkness in the depth of the earth

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    in questo. Basta cercare la parola ajax

    indicativamente dopo che la richiesta ha ottenuto esito positivo devi provare a leggerne la data di modifica utilizzando

    <oggetto xmlhttprequest>.getResponseHeader("last-modified")

    dove

    <oggetto xmlhttprequest>

    è l'oggetto xmlhttprequest che hai istanziato.
    Vuoi aiutare la riforestazione responsabile?

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

  5. #5
    Chiedo venia, ho provato a fare una ricerca, ma non capisco nulla di quello che ho letto Perdonate la mia ignoranza, ma lo scripting non è proprio il mio campo, è già tanto se riesco a fare delle modifiche minori qua e là nei javascript per fargli fare quello che mi serve...
    Questo è in un mezzo php/javascript quello che sto usando ora per ottenere il refresh della chat...se invece fosse possibile farlo unicamente in javascript (usando così il SetTimeout non per aggiornare la pagina, che è anche piuttosto fastidioso, ma per rendere lo script ciclico)

    <SCRIPT><!--
    <?

    $lastmsg = filemtime("tc.txt");
    $now = time();

    if( $now-1 < $lastmsg)
    {
    print "parent.frames[\"chat\"].location.href = \"chat.php\";";
    }
    else
    {
    print "document.write(\"\");";
    }
    ?>
    //-->
    </SCRIPT>
    <SCRIPT language=JavaScript1.1><!--

    setTimeout('location.reload()', 1000);

    //-->
    </SCRIPT>
    The gate to tomorrow is not the light of heaven but the darkness in the depth of the earth

  6. #6
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    un esempio:

    1) salva il codice in una cartella servita da un web server come ad esempio localhost (ajax non funziona con normali chiamate con protocollo file:///). Chiama questo file lastmod.html.

    2) Nella stessa cartella prova a mettere un file che si chiama "file.zip"

    3) chiama il file lastmod.html usando http://localhost/.../lastmod.html
    Se hai fatto tutto correttamente avrai un alert che stampa la data dell'ultima modifica. Questa poi può essere manipolata con l'oggetto Date() e fare tutti i confronti che ti servono.

    Nota: non tutti i file restituiscono l'informazione di ultima modifica, per cui devi sempre verificare che la funzione non restituisca null.


    codice:
    <body>
    <script>
    ...
    function getLastModified(file) {        
           
        if (typeof XMLHttpRequest != "undefined") {
            xhr = new XMLHttpRequest();
        }
        else {
            try {
                xhr = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    xhr = new ActiveXObject("Microsoft.XMLHTTP");
                } 
                catch (e) {
                    xhr = null;
                }
            }
        }        
            
        if (xhr != undefined) {        
                
            xhr.open("HEAD", file, false);         
            xhr.send(null);
                
            if ((xhr.status == 200) || ((xhr.status == 304))) {
                return xhr.getResponseHeader("Last-Modified");            
            }
        }       
    
        return -1;
    }
    
    alert(getLastModified("file.zip"));
    </script>
    </body>
    ...

    Ciao
    Vuoi aiutare la riforestazione responsabile?

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

  7. #7
    Mi dà come errore "Proprietà o metodo non supportati dall'oggetto" al rigo 21
    The gate to tomorrow is not the light of heaven but the darkness in the depth of the earth

  8. #8
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    probabilmente stai accedendo al file via filesystem
    hai un webserver installato in locale?
    Vuoi aiutare la riforestazione responsabile?

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

  9. #9
    no no l'ho messo su internet...Sostituendo "null" con "undefined" [if (xhr != null) invece di if (xhr != undefined)]...funziona.

    Ora però manca il secondo pezzo, ovvero se il file è stato modificato da almeno 3 secondi (ad esempio)...esegue il resto dello script
    The gate to tomorrow is not the light of heaven but the darkness in the depth of the earth

  10. #10
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    per caso il file di cui vuoi controllare la data di ultima modifica si trova nella stesso dominio dello script oppure in un dominio differente?

    Nel secondo caso è normale che non funzioni, ajax non consente richieste cross-domain
    Vuoi aiutare la riforestazione responsabile?

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

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.