Safari 6 si aggiorna quando torno indietro

5

Ho questo fastidioso problema con Safari 6, ogni volta che torno indietro o in avanti (sia i pulsanti della barra degli strumenti o lo scorrimento di due cantanti) la scheda si aggiorna. Ecco un breve video per illustrare il problema: link

Normalmente non mi dispiacerebbe, è cresciuto con me nel tempo (non sono sicuro che sia iniziato quando ho aggiornato Safari 6 o Mountain Lion - c'era una settimana tra gli aggiornamenti), ma il mio il client ha trovato un bug nell'app Web che ho creato (alcuni pulsanti smettono di rispondere quando torna indietro - è ancora su Lion) e non riesco a riprodurre il problema perché il mio Safari è stato aggiornato ogni volta.

Quindi la mia domanda è, qual è il comportamento normale per Safari? E come / se posso fare in modo che Safari non si aggiorni?

UPDATE

Risulta che il problema è che Safari non attiva (di default) l'onLoad anche quando si esegue la "back action". Non riesco a riprodurre il bug sulla mia macchina perché apparentemente l'estensione 1password causa l'evento onLoad anche quando torni indietro.

    
posta Dan F. 06.09.2012 - 14:17
fonte

2 risposte

2

Risulta che il problema è che Safari non attiva (di default) l'onLoad anche quando viene eseguita l'azione "indietro" (usando il pulsante Indietro o lo scorrimento a due dita) ma non riesco a riprodurre il bug sul mio macchina perché apparentemente l'estensione 1password causa l'evento onLoad anche quando torni indietro.

Ulteriori spiegazioni alla richiesta di Render:

Quindi assumiamo questo codice su tutte le pagine:

$(document).ready(function () {
    alert('test');
}

E questa sequenza di azioni:

  1. apri pagina 1.html
  2. apri pagina-2.html
  3. Torna indietro
  4. Vai avanti

Safari non mostrerà l'avviso dopo i passaggi 3 e 4, quindi l'evento onLoad non viene attivato e la pagina .js continua l'esecuzione dal punto in cui era stata interrotta quando si è allontanato dalla pagina.

Anche nell'attuale versione 6.0.3, l'estensione 1password (3.9.14) sembra non avere alcun effetto su questo comportamento.

Spero che questo aiuti. Questo non dovrebbe importare nella maggior parte dei casi, è solo quando scrivi codice non valido (come fa) che ti morde il culo:)

    
risposta data 13.09.2012 - 11:01
fonte
-1

Mentre visivamente sembra che la pagina si aggiorni, se la risposta originale aveva gli header della cache appropriati, verrà servita dalla cache e nessuna richiesta verrà effettuata sul server fino a quando la cache non sarà stantia.

Durante il test ho incontrato un problema in cui Web Inspector di Safari non sembra indicare correttamente se una pagina è stata caricata dalla cache, ma durante il monitoraggio dei registri del server è emerso che Safari rispetta le intestazioni della cache inviate dopo tutti.

Quando un server ha inviato intestazioni che non consentono la memorizzazione nella cache della risposta, o la cache è scaduta nel frattempo, Safari come qualsiasi altro browser effettuerà una nuova richiesta quando rivisiterà una pagina dalla cronologia.

Si noti inoltre che è possibile disabilitare completamente la memorizzazione nella cache dal menu Sviluppo (se abilitato). Assicurati di aver non abilitare questa opzione.

    
risposta data 06.09.2012 - 14:42
fonte

Leggi altre domande sui tag