Ajax: Zurück-Schaltfläche im IE
Steffen Flämig
- programmiertechnik
0 molily
0 Steffen Flämig0 dicon0 Steffen Flämig0 dicon
Hallo,
gibt es außer der Methode mit einer in einem unsichtbarem frame
geladenen "history.html?eineDenZustandRepräsentierendeQuery" noch
eine andere Methode, die Zurück- / Vorwärts-Schaltflächen des IE im
Zusammenhang mit Ajax zu reanimieren?
Die o.g. Methode macht bei mir Probleme da bei einer langsamen,
manchmal "hängenden" Internetverbindung die history.html
wahrscheinlich nicht gleich nach dem Zustandswechsel der Seite neu
geladen wird. Es kommt dann zum periodischen Aufruf des "Neusetzen
der Query" (search = neueQuery) und erneuten Ladeversuch der
history.html was die ganze Anwendung lämt und außerdem nervend im
Lautsprecher klickt.
MfG
Steffen
Hallo,
ich kenn das nur so, dass man in einem iframe oder auch in der Hauptseite mit einem Anker (location.hash) arbeitet, also URI#Zustand. Das dürfte den gewünschten Effekt haben. Jedenfalls verstehe ich nicht, wieso man bei jeder Zustandsänderung eine history.html vom Server anfordern muss und den Zustands-String damit zum Server übermitteln muss (speicherst du den dort in der Session oder so?) - das ist natürlich lahm und, wie ich denke, überflüssige Serverkommunikation.
Mathias
Hallo Mathias,
ich kenn das nur so, dass man in einem iframe oder auch in der Hauptseite mit einem Anker (location.hash) arbeitet, also URI#Zustand. Das dürfte den gewünschten Effekt haben.
Das funktioniert leider im IE überhaupt nicht. Um die Funktionalität der
Vor-/Zurück-Schaltflächen herzustellen, muß jeder Zustandswechsel einen
Eintrag in der Browser Verlaufsliste.
Beim IE erzeugen (soweit ich weiß) _nur tatsächliche HTTP Anfragen_
einen solchen. Deshalb diese (Dummy-) Serverabfrage.
Mozilla, Firefox und Opera genügt ein URI#Zustand.
- das ist natürlich lahm
Und bei entsprechend schlechter Internetanbindung leider auch unzuverlässig. Deshalb suche ich eine Alternative.
MfG
Steffen
Hi,
Das funktioniert leider im IE überhaupt nicht.
mit einem kleinen Trick schon. Wird in dem iframe mit jedem neuen Aufruf ein
dummy.php#neuerHash nachgeladen, wird auch ein neuer Eintrag in der History
realisiert. Back oder Forward ruft den Dummy auf. Mit dem dann geladenen
Hash ließe sich via kleiner Funktion der Rest des Frames rekonstruieren.
Grüße, dicon
Hi,
Das funktioniert leider im IE überhaupt nicht.
mit einem kleinen Trick schon. Wird in dem iframe mit jedem neuen Aufruf ein
dummy.php#neuerHash nachgeladen, wird auch ein neuer Eintrag in der History
realisiert.
Genau, so ähnlich hatte ich das im ersten Posting ja auch gesagt.
Aber genau dadurch wird eine HTTP-Anfrage an den Server geschickt.
Diese erzeugt dann den gewünscht Eintrag in der Browser History auf
die der Vor-/Zurück Button zugreift.
Diese Serveranfrage sorgt aber bei lausiger Internetanbindung für die
beschriebenen Dreckeffekte (lahmen und klicken im Lautsprecher).
Ob Du eine dummy.php#neuerHash oder ich eine history.html?neueQuery
vom Server nachlade macht imho keinen Unterschied.
MfG
Steffen
Ich nochmal,
Ob Du eine dummy.php#neuerHash oder ich eine history.html?neueQuery
vom Server nachlade macht imho keinen Unterschied.
Alles nachfolgende bitte als Diskussionsgrundlage verstehen... da müssen sich Leute
melden, die mehr Plan haben als ich... ;-)
Es geht imo darum, einen Eintrag in der History zu realisieren. Entweder muss
dazu was nachgeladen werden (history.html?neueQuery) oder es wird ein neuer
Anker/Hash-Wert gesetzt (history.html#neueQuery), ohne(!) nachladen. Insofern
sehe ich schon einen Unterschiede zwischen unseren Ansätzen.
Ansatz 2 bietet die Möglichkeit im Zusammenhang mit dem httpRequest(AJAX)
via window.location.hash = 'neueQuery' den Hash für das iframe zu ändern und
damit einen Eintrag in der History zu erzeugen, ohne etwas nachzuladen -
Ausnahme IE.
Wenn ich das richtig verstanden habe, lässt sich für den IE das ganze über
document.getElementById(iframeID).src = 'history.html#neueQuery' realisieren.
Back oder Forward läd aus der History den entsprechenden Hash. Ist auf der
Hauptseite eine JS-Funktion eingebunden, die den Hash des iframes auswertet,
kann der Rest "nachgebaut" werden...
Ich habe dazu vor zwei, drei Monaten einen Artikel gelesen... wenn ich den
noch finde, reich ich ihn nach.
Grüße, dicon