2010-07-14 10 views
13

Ich bin neugierig, ob es eine Möglichkeit gibt, das Browseraktualisierungsereignis in Javascript spezifisch zu erkennen. Wir verwenden das jQuery.address-Plugin, um den AJAX-Funktionen Vorwärts- und Zurück-Schaltflächenfunktionen bereitzustellen. Das Problem, mit dem ich konfrontiert bin, ist, dass dieses Plugin anscheinend nicht erkennt, ob der Benutzer die Seite aktualisiert hat.Browseraktualisierung in Javascript erkennen

Dieser Code wird jedes Mal ausgeführt, wenn der Benutzer im Browserverlauf vor- oder zurückgeht. Ich möchte auch, dass es exexute, wenn der Benutzer aktualisiert wird.

$.address.init(function(event) { 
}).change(function(event) { 

     SummaryDiv.SwapPanels(newPanelID); 
    } 

Irgendwelche Ideen?

Antwort

5

Ein naive Versuch von mir wäre, den aktuellen Zustand einfach nach jeder Änderung in ein Cookie zu speichern und einfach bei jeder Seitenladung neu zu laden.

+0

So würde ich es tun, ohne nach anderen Methoden zu suchen. Aber wissen Sie, dass diese Methode vom Benutzer leicht vermieden/bearbeitet werden kann. –

+5

Wie könnte die ganze Website deaktiviert Javascript :) – LukeN

+0

Ich versuche dies. Dies scheint eine häufige Problemumgehung zu sein. – Nick

1

Bei einer Seitenaktualisierung wird das Javascript ebenfalls neu geladen. Könnten Sie nicht angeben, was Sie direkt in jQuery's ready-Methode tun möchten?

1

konnte ich die Veränderung Ereigniscode zwingen, auf Refresh von

window.onload = $.address.update(function(){  
... 
}) 
5

Entlang dieser Linien zu laufen, habe ich eine Seite, deren Verhalten hatte ich nicht wollte, wenn aufgefrischt wiederholen, Also änderte ich den Hash programmatisch wie in this answer beschrieben.

checkRefresh: function() { 
    if (document.location.hash === '#visited') { 
     console.log('Refreshed'); 
     return true; 
    } else { 
     document.location.hash = 'visited'; 
     return false; 
    } 
} 

UPDATE

fand ich, dass zumindest Mobile Safari den Hash ignorieren würde, wenn die Refresh-automatisch eingetreten (zum Beispiel Seite aus dem Cache ausgelöscht, bevor Daten erneut betrachtet werden). Ich endete mit einer komplexeren Lösung described here.

Verwandte Themen