2012-05-01 34 views
5

Mam stronę, która animuje całe ciało z ekranu przeglądarki jako przejście. Działa dobrze, ale gdy użytkownik kliknie przycisk "Wstecz" w przeglądarce Firefox przywołuje stronę z pamięci podręcznej z historii, która nie ma ciała.Załaduj ponownie stronę po odwiedzeniu, klikając przycisk Wstecz w przeglądarce Firefox

Wystarczy mi więc ponownie załadować stronę po odwiedzeniu za pomocą przycisku Wstecz.

Próbowałem tego kodu, aby ponownie załadować stronę, aby uniknąć powtórnego ładowania.

<script type="text/javascript"> 
    window.onload=function(){ 
    var e=document.getElementById("refreshed"); 
    if(e.value=="no")e.value="yes"; 
    else{e.value="no";location.reload();} 
    } 
</script> 
<input type="hidden" id="refreshed" value="no"> 

To nie rozwiązuje problemu, jak funkcja anonimowa nie została jeszcze wywołana.

Próbowałem więc ustawić nagłówki, aby przeglądarka nie buforowała strony.

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"> 
<meta http-equiv="Pragma" content="no-cache"> 
<meta http-equiv="Expires" content="0"> 

To również nie rozwiązało problemu.

Strona działa poprawnie w przeglądarce Chrome.

wersja Firefoksa używam to 12,0

Jak mogę przeładować stronę za pomocą JavaScript, jQuery lub innych skryptów po stronie klienta?

+0

Nie sądzę, że to działa również w chrome, wartość jest zawsze "nie" –

+0

W chrome funkcja anonimowa zostanie wywołana, a strona nie zostanie ponownie załadowana. Ale nadal, ponieważ strona nie jest buforowana, nie ma znaczenia. Mój problem polega na tym, że w Firefoksie funkcja ta nie jest nawet wywoływana. – mahesmohan

Odpowiedz

5

Brak zdarzenia typu onload uruchamianego podczas powrotu do strony z pamięci podręcznej.

Masz trzy główne opcje, myślę:

  1. Użyj onpageshow zdarzenie (które robi ogień podczas nawigowania do pamięci podręcznej).
  2. Zapobiegaj buforowaniu strony w pamięci, dodając detektor zdarzeń zwolnienia pamięci (który może być pustą funkcją).
  3. Nie rób denerwującej animacji.
+0

Nawet ja nienawidzę denerwującej animacji rozładowania, ale klient, który robię to specjalnie dla zapytania o animację rozładowania. Wielkie dzięki Boris. – mahesmohan

+0

Ah, tak. Klienci są trochę podobni do PITA. ;) –

+0

+1. * "Zapobiegaj buforowaniu w pamięci twojej strony, dodając detektor zdarzeń zwolnienia" *, to się udało. Jest tu [dokumentacja] (https://developer.mozilla.org/en-US/docs/Using_Firefox_1.5_caching). – Qtax

0

Nie próbowałem, ale setTimeout może pomóc.

<script> 
setTimeout(function() { 
var e=document.getElementById("refreshed"); 
    if(e.value=="no")e.value="yes"; 
    else{e.value="no";location.reload();} 
}, 1000); 
</script> 
Powiązane problemy