2008-08-27 12 views
9

Ich schreibe eine einfache Fotoalbum-App mit ASP.NET Ajax.
Die App verwendet asynchrone Ajax-Aufrufe, um das nächste Foto im Album vorzuladen, ohne die URL im Browser zu ändern.Wie wird der Browserverlauf synchronisiert, wenn Ajax verwendet wird?

Das Problem ist, dass, wenn der Benutzer im Browser auf die Schaltfläche zurück im Browser klickt, die App nicht zurück zum vorherigen Foto, sondern navigiert auf die Homepage der Anwendung.

Gibt es eine Möglichkeit, den Browser dazu zu bringen, jeden Ajax-Anruf dem Browserverlauf hinzuzufügen?

Antwort

3

Viele Websites Verwendung eines versteckten iframe machen, dies zu tun, aktualisieren Sie einfach den Iframe mit der neuen URL, die sie dem Browserverlauf hinzufügt. Dann müssen Sie nur noch verarbeiten, wie Ihre Anwendung auf diese Ereignisse reagiert. Sie müssen entweder den Status/Standort des Iframes ermitteln oder die Seite mithilfe dieser URL aktualisieren.

+0

Wenn ich das richtig verstehe, wird der Iframe tatsächlich die Nicht-Ajax-Anfrage an den Server senden. Das wäre eine unnötige Belastung für den Server. Könnte für Websites mit wenig Verkehr in Ordnung sein, aber es ist definitiv keine gute Lösung - wenn die Anfrage stattfindet. –

0

Das Update 3.5 SP1 unterstützt jetzt Browserverlauf und Schaltfläche Zurück in ASP.NET Ajax.

0

Für alle Lösungen über die Schaltfläche zurück, keine von ihnen sind "automatisch". Mit jedem einzelnen wirst du etwas Arbeit machen müssen, um den Zustand der Seite beizubehalten. Also nein, es gibt keine Möglichkeit, den Browser zu "tricksen", aber es gibt einige großartige Bibliotheken, die Ihnen mit dem Zurück-Knopf helfen.

14

Update: Es gibt jetzt die HTML5-Verlaufs-API (pushState, popState), die die HTML4-Funktion hashchange deaktiviert. History.js bietet Cross-Browser-Kompatibilität und eine optionalhashchange Fallback für HTML4-Browser.

Die Antwort auf diese Frage wird für diese Fragen als meine Antworten mehr oder weniger das gleiche sein:

Zusammengefasst werden Sie möchte auf jeden Fall Sehen Sie sich diese zwei Projekte an, die den gesamten Hashwechsel-Prozess erklären und Ajax zu der Mischung hinzufügen:

  • jQuery History (Verwenden von Hashes zum Verwalten des Seitenstatus und zum Binden von Änderungen zum Aktualisieren Ihrer Seite).

  • jQuery Ajaxy (Ajax-Erweiterung für jQuery History, um vollständige Ajax-Websites zu ermöglichen, während sie völlig unaufdringlich und leicht abbaubar sind).

1

können Sie einfach & leichte PathJS lib verwenden.

Anwendungsbeispiel:

Path.map("#/page1").to(function(){ 
    ... 
}); 

Path.map("#/page2").to(function(){ 
    ... 
}); 

Path.root("#/mainpage"); 
Path.listen(); 
Verwandte Themen