Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    303

    Autoaggiornamento di una pagina

    Ciao a tutti,
    premessa:
    apro il mio primo thread su HTML 5 dopo essere stato consigliato dal forum Javascript, difatti abbiamo provato e riprovato a risolvere il problema, sono stato aiutato anche molto da utenti e mod ma non siamo riusciti a venirne a capo, dopo 1000 tentativi abbiamo capito che forse HTML 5 è più indicato e si può fare qualcosa.

    Quello che vorrei fare, per farla breve è una pagina (oppure un iframe) che si autoaggiorni ogni X secondi, che in caso in cui dovesse mancare la connessione continui ugualmente ad autoaggiornare, in modo che quando la connessione ritorna riprenda regolarmente.

    Spero di aver esposto correttamente il problema e Vi ringrazio per l'eventuale aiuto...

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    si autoaggiorna in che modo se la connessione non c'è??
    o parli di refresh della 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 L'avatar di barney09
    Registrato dal
    Dec 2000
    Messaggi
    1,296
    Prova a documentarti sui Websockets e per quanto riguarda l'utilizzo offline, html5 ti mette a disposizione diversi strumenti. Va valutata pero' la compatibilità sui vari browser.

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    303
    Ciao e innanzitutto grazie.

    Sì, parlo di autorefresh, della pagina o almeno di un iframe (o un frame) contenuto in essa.

    Diciamo che sono riuscito a realizzarlo in javascript settando l'autorefresh di un iframe contenuto nella pagina, solo che di norma tutti i browser appena perdono la connessione visualizzano nell'iframe la pagina standard di errore e smettono di refreshare.

    Sono riuscito a farlo funzionare su Explorer, Opera e Firefox. In pratica quando "salta" la connessione continuano a refreshare e visualizzano momentaneamente quello che c'è in cache, cioè sempre la stessa pagina, quando torna la connessione si aggiorna di nuovo.
    Purtroppo sui browser dove mi interesserebbe che funzioni cioè Chrome ma soprattutto android non riesco, per questo mi hanno consigliato di provare col manifest.

    Purtroppo sono completamente digiuno di html5, sto iniziando a leggere un po' di guide e nel frattempo sto cercando qua e là spunti ma fin'ora non sono riuscito a venirne a capo.

    grazie a tutti.

  5. #5
    Utente di HTML.it L'avatar di barney09
    Registrato dal
    Dec 2000
    Messaggi
    1,296
    non ho ancora realizzato niente in html5 con la gestione dell'offline, pero' di fatto funziona così:

    tu stabilisci una pagina per quando l'utente è connesso e una pagina per quando l'utente è offline.

    Di fatto quella per quando è offline viene scaricata sul device...


    cerca html5 offline chache manifest


    Qui trovi una tabella delle compatibilità:
    http://caniuse.com/offline-apps

  6. #6
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    usare la modalità offline non è sufficiente: infatti pur essendo nello stato online, potresti non riuscrire ad accedere al tuo specifico server per una pletora di motivi

    l'idea base potrebbe essere invece fare un ping via ajax al tuo server, ovvero una request ad un file presente in esso. se la request ha successo fai refresh della tua pagina altrimenti se la request va in errore o in timeout non fai niente. In entrambi i casi a chiamata finita (o a refresh avcenuto) imposti il timeout per il tentativo di refresh successivo
    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
    Aug 2000
    Messaggi
    303
    Mi sono documentato un po' sul manifest e sto facendo delle prove...
    tu dici che la modalità "fallback" funziona solo quando lo stato del browser è settato su offline?
    In effetti il mio problema è opposto, cioè che il browser di norma deve essere sempre online, il caso in cui va offline dev'essere una possibilità che pur minima comunque è presente, e non deve bloccarsi tutto perché viene visualizzata la pagina di errore del browser.

    Molto interessante la soluzione con ajax, diciamo che ci avevo pensato per aggiornare solo una parte della pagina ma purtroppo bisogna usare i <div> e con i siti esterni non si possono utilizzare per cui sono tornato all'iframe.

    Il ping dici che è fattibile? O è meglio cercare un file?

  8. #8
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    una cosa abbozzata in 5 minuti (non l'ho testata, è solo per darti un'idea)

    codice:
    (function($, url) {
    
        $(document).ready(function() {
            
            var refreshRate = 5000,   /** 5 secondi **/
                increase    = 1.25,
                
                ping = function() {
                   
                    var
                        pingXHR = $.ajax({
                            "url"       : url,
                            "success"   : function() {
                                location.href = url;
                            },
                            "complete"  : function() {
                                clearInterval(pingTimeout);
                                refreshRate *= increase;
                                setPageTimeout();
                            }
                        }),
                            
                        pingTimeout = setTimeout(function() {
                            pingXHR.abort();
                            refreshRate *= increase;
                            setPageTimeout();
                        }, 5000)
                },
                
                setPageTimeout = function() {
                    setTimeout(function() {
                        ping();
                    }, refreshRate) 
                };
                
            
            setPageTimeout();
            
        });
        
    }(jQuery, "http://www.tuodominio.it/pagina-da-aggiornare.php"));
    in pratica dopo un certo tempo dal caricamento della pagina (nell'esempio, 5 secondi) parte una chiamata ajax all'url che vuoi aggiornare.

    se la trova il browser ricarica la pagina a quell'url altrimenti viene rischedulato un nuovo ping che può essere impostato o al tempo originario (5 secondi) oppure ad un tempo crescente, impostando la variabile increase ogni volta che il ping fallisce.

    nell'esempio ipotizzando che tu sia offline o il server non risponda il ping avverrà dopo 5 secondi, poi dopo un tempo crescente come nell'esempio che ti posto qui sotto


    Immagini allegate Immagini allegate
    Vuoi aiutare la riforestazione responsabile?

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

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    303
    Mi sembra ottima come soluzione... sto provando ma su chrome non funziona, su explorer mi dà errore: 'jQuery' non è definito.

    codice:
    <script>
    (function($, url) {
    
        $(document).ready(function() {
            
            var refreshRate = 5000,   /** 5 secondi **/
                increase    = 1.25,
                
                ping = function() {
                   
                    var
                        pingXHR = $.ajax({
                            "http://miosito.it/test.php"       : url,
                            success   : function() {
                                location.href = url;
                            },
                            complete  : function() {
                                clearInterval(pingTimeout);
                                refreshRate *= increase;
                                setPageTimeout();
                            }
                        }),
                            
                        pingTimeout = setTimeout(function() {
                            pingXHR.abort();
                            refreshRate *= increase;
                            setPageTimeout();
                        }, 5000)
                },
                
                setPageTimeout = function() {
                    setTimeout(function() {
                        ping();
                    }, refreshRate) 
                };
                
            
            setPageTimeout();
            
        });
        
    }(jQuery, "http://miosito.it/test.php"));
    
    </script>
    ma devo usare anche jquery? Scusa ma non sono molto pratico di ajax...

  10. #10
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    bè non è che sei obbligato ad usare jquery
    io l'ho usato per farti un esempio in poco tempo... sta a te decidere se usare jQuery o farne a meno e modificare il codice...
    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 © 2024 vBulletin Solutions, Inc. All rights reserved.