2010-01-14 9 views
6

Ich entwickle eine Webanwendung, bei der aufgrund des langsamen Datenbankzugriffs nicht der gesamte Inhalt einer Seite sofort, sondern dynamisch geladen wird, wenn der Benutzer auf a klickt nachdem Sie eine Auswahl getroffen haben.Unterschiede im Internet Explorer und Firefox beim dynamischen Laden von Inhalten dann vorwärts und rückwärts gehen

Das funktioniert gut. Wenn ich jedoch nach dem dynamischen Laden des Inhalts zu einer anderen Webseite navigiere und dann zurück navigiere, ist der geladene Inhalt in Internet Explorer verschwunden, d. H. Die Seite wird auf die ursprünglich abgerufene Seite zurückgesetzt. In Firefox (und auch Opera) ist der geladene Inhalt jedoch immer noch vorhanden, d. H. Die Seite wird so aussehen, als ob sie vor dem Navigieren weggegangen wäre.

Das Firefox-Verhalten ist in meinem Fall das gewünschte Verhalten, da der Benutzer routinemäßig zu Unterseiten navigieren und zur Hauptseite zurückkehren würde. Meine Frage ist daher, gibt es eine Möglichkeit, Internet Explorer zu zwingen, dieses Verhalten zu zeigen, oder gibt es mögliche Problemumgehungen, um das gewünschte Ergebnis zu erhalten?

Antwort

3

Hier meine Umgehungslösung für IE ist. Es nutzt die Tatsache, dass selbst wenn das DOM zurückgesetzt wird, wenn weg und zurück zu einer Seite navigiert wird, die Eingabefeldwerte immer noch gespeichert werden.

Für jedes dynamisch geladene Element habe ich auch ein verstecktes Eingabefeld, wo ich den geladenen Wert "cache". Ich habe dann eine Funktion transferFromCache(), die die Werte aus jedem versteckten Eingabefeld in das entsprechende Element kopiert. Diese Funktion wird bei der Seiteninitiierung ausgeführt, die im Falle des IE beim Laden der Seite UND jedes Mal ausgeführt wird, wenn zu der Seite zurück navigiert wird.

Diese Technik könnte wahrscheinlich auch verwendet werden, um die Werte von Javascript-Variablen zu speichern.

2

Ich glaube nicht, dass es eine Methode gibt, IE auf diese Weise FF zu emulieren. Der Grund ist, mit ziemlich grundlegenden Aspekten der Browser zu tun. FF verwendet einen Mechanismus für seine Seitenhistorie namens "Fast DOM Caching", der (aus meinem begrenzten Verständnis) im Grunde bedeutet, dass, wenn es eine Seite in den Browserverlauf legt, es das aktuelle DOM (also den aktuellen Seitenstatus) in einer serialisierten speichert format, das heißt, wenn die Seite aus dem Verlauf neu geladen wird, bleibt der Zustand erhalten und FF kann dies viel schneller machen, da viel Arbeit bereits erledigt ist (Parsing des HTML in ein DOM, etc.). Im Vergleich dazu speichert der IE den ursprünglich empfangenen HTML-Code einfach als History-Datei und lädt sie beim Navigieren im Verlauf neu. Hier

+0

Es scheint, dass in Bezug auf IE, ist dies fast so, aber nicht ganz. Als Beispiel verwende ich in meiner Anwendung JavaScript-Filterung und Paginierung (von Inhalten in einer Tabelle). Ich benutze "Select" Eingabefelder für die Filterung. In beiden IE und FF, die ausgewählten Optionen werden nach dem Navigieren weg und wieder zurück erinnert. Ich benutze Javascript-Variablen für den Paginierungsstatus. Diese Information wird in FF gespeichert, aber im IE zurückgesetzt. –

2

ist ein article about saving state in session variables, das dazu beitragen kann

+0

Danke. Dieser Artikel beschreibt das Verhalten von IE. In FF wird Javascript beim Navigieren weg und zurück nicht zurückgesetzt. Aber die Problemumgehungen könnten im IE nützlich sein, ich könnte das zweite versuchen (mit versteckten Eingabefeldern zum Speichern von Informationen). –

Verwandte Themen