Wie kann man mit der Zurück-Schaltfläche des Browsers durch AJAX-Aufrufe zurückkommen?

8

Ich habe eine Seite mit vielen dynamisch erzeugten Kontrollkästchen. Wenn die Benutzer diese Kontrollkästchen aktivieren, ändert sich der Inhalt auf der Seite dynamisch über Ajax. Die Endbenutzer beschweren sich, dass sie nach dem Drücken von submit und dem Drücken der Zurück-Taste, um etwas zu ändern, ihre Auswahl weggeblasen haben und sie alles noch einmal machen müssen.

Ich habe einige Seiten (gmail, facebook, etc ...) gesehen, die das Hash-Symbol in der URL verwenden, um die Zurück-Schaltfläche zu hacken, so dass sie AJAX-Aufrufe durchführt, anstatt zur vorherigen Ganzseitenanforderung zurückzukehren. Ich möchte dies tun, um die URL zu ändern, bevor die Seite übermittelt wird, so dass das Drücken der Zurück-Schaltfläche ihre zuvor ausgewählten Felder lädt.

Zum Beispiel:

Wenn ich in Google Mail meinen Posteingang anschaue, sieht meine URL wie folgt aus: https://mail.google.com/mail/?shva=1#inbox

Wenn ich auf "Gesendete Mail" klicke, wird ein AJAX-Aufruf ausgeführt und meine URL wird so geändert, dass sie wie folgt aussieht: https://mail.google.com/mail/?shva=1#sent

Ich mag dieses Verhalten wirklich und möchte es duplizieren. Wie wird das erreicht?

  1. Leiten Ihre Links tatsächlich JavaScript aus oder verweisen sie einfach auf die URL mit den entsprechenden Hash-Symbolinformationen?

  2. Wie liest du die Hash-Symbol-Information in Javascript?

  3. Wie wirkt sich diese Art der Navigation auf Suchmaschinen aus? Würde eine Suchmaschine wissen, dass zwei URLs, die abgesehen von den Informationen nach dem Hash identisch sind, tatsächlich unterschiedliche URLs sind und sie als solche indizieren?

  4. Welche anderen Vor- und Nachteile dieser Technik sollte ich in Betracht ziehen?

HINWEIS: Ich verwende C # mit ASP.NET Web Forms und ASP.NET MVC 3.0, falls das überhaupt wichtig ist.

    
Chev 09.05.2011, 22:21
quelle

3 Antworten

2

JQuery-Plugin: Ссылка

Eine weitere jQuery-Bibliothek, die ich in der Vergangenheit benutzt habe:

jQuery BBQ: Zurück Button & amp; Abfragebibliothek

Auch eine mehr herunterskalierte Version des vorherigen, wenn Sie nicht alle Funktionen benötigen und nur das Hashchange-Ereignis für alle Browser erhalten:

jQuery-Hashänderungs-Ereignis

HINWEIS: Nur als kurze Einführung zu den oben genannten Bibliotheken. Das Hashchange-Ereignis wird nativ von neueren (HTML5 unterstützten) Browsern unterstützt, in welchem ​​Fall die Skripte nur an dieses Ereignis binden. Bei älteren Browsern, die dieses Ereignis nicht unterstützen, erstellt das Skript eine Abrufschleife, um das Ereignis zu simulieren. In beiden Fällen können Sie an das Ereignis binden und entsprechend umgehen.

BEARBEITEN: Um Ihre Fragen zu beantworten:

  1. Die Links lösen kein JavaScript aus, Links ändern einfach die URL mit dem Hash. Das Hashchange-Ereignis überwacht diese Aktion. Wenn sich der Hashwert ändert (der im Browserprotokollstapel protokolliert wird), wird das Ereignis ausgelöst.
  2. location.hash wird verwendet, um den Hash-Wert zu lesen, und jedes geeignete Parsing, das Sie von diesem Punkt benötigen würden.
  3. Wahrscheinlich nicht SEO-clever genug, um Ihnen eine vollständige Antwort darauf zu geben, aber ziemlich sicher Suchmaschinen indexieren keine Hashes.
  4. Vorteile für diese Technik sind die Benutzerfreundlichkeit, da Ihre Benutzer ihre Zurück-Schaltflächen richtig verwenden können. Auch alle history.back(0) Javascript Aufrufe funktionieren auch richtig (ich mag sie nicht, aber Leute benutzen sie). Nachteile sind, dass Sie, wie Sie zu Beginn entwickeln, einige skurrile Fehler bekommen können, abhängig davon, wie Ihr Code geschrieben ist. Alles in allem denke ich, dass mit der Verwendung der Plugins ein großer Teil der Beinarbeit aus dem Prozess genommen wurde und es eine großartige Methode für Benutzerfreundlichkeit ist.
jaywon 09.05.2011, 22:50
quelle
4

Um Hashtags zu bearbeiten, schauen Sie sich location.hash (javascript) an.

Sie werden sich auch für den neuen Push / Pop-Status in HTML 5 interessieren. Ссылка .

github hat damit einige ziemlich coole Sachen gemacht. Sehen Sie sich deren Blog-Eintrag in ihrem Tree-Slider-Feature unter Ссылка an.

Es gibt auch das jQuery-Verlaufs-Plugin unter Ссылка . (EDIT: Ich sehe, Joe hat mich auf diesen geschlagen).

    
csano 09.05.2011 22:31
quelle
3

Sieh dir das Jquery-History-Plugin Ссылка an. Ich habe es in der Vergangenheit benutzt, und zwar einfach könnte tun, was Sie wollen.

    
Joe 09.05.2011 22:30
quelle

Tags und Links