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?
Leiten Ihre Links tatsächlich JavaScript aus oder verweisen sie einfach auf die URL mit den entsprechenden Hash-Symbolinformationen?
Wie liest du die Hash-Symbol-Information in Javascript?
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?
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.
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:
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:
location.hash
wird verwendet, um den Hash-Wert zu lesen, und jedes geeignete Parsing, das Sie von diesem Punkt benötigen würden. 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. 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).
Tags und Links asp.net-mvc c# jquery asp.net ajax