Octothorpe ist der technische Begriff für die Raute, die das optionale Fragment einer URL einleitet. Das Fragment teilt dem Browser in der Regel mit, wo die Seite zu positionieren ist, wenn sich ein Anker-Tag mit dem Namen des Fragments auf der Seite befindet.
Aber ist das die einzige Möglichkeit, wie das Fragment verwendet werden kann?
Da man fast alles in das Fragment packen kann, kann es auch als Methode verwendet werden, um Abfrageparameter zu einer Seite hinzuzufügen, die nicht an den Server gesendet werden und somit nur auf dem Client ausgewertet werden können. Mit dieser Methode ist es möglich, einer Seite einen Zustand hinzuzufügen, ohne eine neue URL bezüglich SEO zu generieren.
Manchmal ist es notwendig, eine Interaktion zu verfolgen, die am Ende auf eine neue Seite übergeht. Zum Beispiel klickt ein Benutzer auf einen Produktlink in der Produktliste und wird sofort zur Detailansicht dieses Produkts weitergeleitet. Nehmen wir an, wir wollen wissen, an welchem Index das Produkt in der Produktliste stand, damit wir diese Information nutzen können, um die Sortierung in der Produktliste in Zukunft neu zu ordnen. Um diese Information zu erhalten, müssten wir eine Anfrage an einen Tracking-Server mit einem bestimmten Schlüssel-Wert-Paar senden.
Es gibt einige Lösungen, die du dir vorstellen kannst.
Wie du vielleicht schon erraten hast - wir speichern die Tracking-Informationen innerhalb des Fragments. Auf der Seite mit der Detailansicht extrahieren wir diese Informationen, senden die Anfrage und "bereinigen" anschließend das Fragment. Wir haben uns entschieden, die Variable "t" und ein json-Objekt als Wert zu verwenden.
Unser Link sieht wie folgt aus:
<a href="/p/a-great-shoe-123456#t={'listposition':3}">Schuh</a>
Beim Laden des Körpers liest ein kleines Javascript-Snippet (1) das Fragment der URL, analysiert den Wert der Variable t und sendet dieses Objekt an unseren Tracking-Server. Danach wird die Variable t aus dem Fragment entfernt. Auf diese Weise stellen wir sicher, dass die Tracking-Anfrage nicht erneut gesendet wird, wenn ein Benutzer die Seite neu lädt oder den Link an einen Freund schickt.
Zum Lesen und Manipulieren des Fragments verwenden wir das quelloffene jQuery-Plugin "BBQ"(http://benalman.com/projects/jquery-bbq-plugin/)
1) Snippet, um Tracking-Informationen zu extrahieren und an unseren Tracking-Server zu senden:
var trackingHash = $.bbq.getState('t'), t; try { if (trackingHash) { t = JSON.parse(trackingHash); if (t) { sendData(t); // eine Funktion, um unsere Daten an den Tracking-Server zu senden hash = $.deparam.fragment(); delete hash.t; /* wir wollen keinen neuen Zustand im Browser erzeugen, damit der Zurück-Button noch funktioniert. */ window.location.replace('#' + $.param(hash)); } } } catch (ignore) { }
Natürlich ist die Nachverfolgung nicht der einzige Grund, Informationen zu einer neuen Seite hinzuzufügen. Wir verwenden diese Technik auch, um eine Javascript-Funktion beim Laden auf der Grundlage von im Fragment festgelegten Variablen auszuführen. Zum Beispiel, um eine Ebene sofort auf einer Seite zu öffnen oder um direkt zu einer anderen Registerkarte als der Standard-Registerkarte zu wechseln und sogar um die richtige Variante auf einer Produkt-Detailansichtsseite auszuwählen.
Hi,
This is a very good trick and we start using it all the time :)
Your blog is very interesting. You should write all your article in English. I don't speak Deutch.
Alex
We have received your feedback.