Steffen Flämig: Ajax: Zurück-Schaltfläche im IE

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

  1. 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

    1. 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

      1. 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

        1. 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

          1. 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