Frage

Google Mail verwendet # wenn Sie auf eine E-Mail klicken Sie auf die Seite (+ Ajax Aktion) zu unterscheiden. http://mail.google.com/mail/#inbox/1238e709e37a1394

Ich fand: Google # anstelle der Suche? in URL. Warum?

In FF oder Chrome können Sie nach vorne und zurück zwischen dieser Urls ohne Refresh verwenden: http://X.com/MyPage.aspx#1 http://X.com/MyPage.aspx#2 http://X.com/MyPage.aspx#3

Aber auf IE die Seite zu aktualisieren und es zählt nicht die params nach # wenn eine Rückwirkung hergestellt wird.

Wie Gmail macht die Magie passiert?

War es hilfreich?

Andere Tipps

Ich kann Ihnen die Antwort auf diese Frage, weil ich konfrontiert habe und dieses Problem gelöst.

Es gibt ein paar Konzepte hier zu verstehen, zuerst:

  1. Sie Javascript kann den Browser-History nicht direkt ändern.
  2. , wenn die Basis-URL eines iframe in der Seite ändert, wird die Geschichte aktualisiert. (Aber dies hat einige Macken mit verschiedenen Browsern).
  3. die URL hat einen "gehasht" Teil: zB in der URL http://mail.google.com/mail#inbox, #inbox ist der Hash-Teil. Nennen wir es das „Hash“. so http://mail.google.com/mail wird unsere "Basis-URL" sein.

Tracking-Geschichte von GMail wird hauptsächlich Trick geschieht mit auf der Grundlage dieser "Hash".

Also, ein paar weitere Konzepte:

  1. , wenn die URL in der Adressleiste ändert, wird die Geschichte aktualisiert (die vorherige URL geht in die Geschichte)
  2. , wenn die Basis-URL geändert wird, wird die Seite neu geladen.
  3. , wenn der Hash-Teil der URL ändert, ohne die Basis-URL zu ändern, ist die Seite nicht neu geladen.

Wenn Sie also von http://mail.google.com/mail#inbox gehen zu http://mail.google.com/mail#sent, die Seite wird nicht aufgefrischt .

Nun, wenn GMail war eine Ereignisbenachrichtigung zu erhalten, wenn der Hash geändert wird, dann Aktionen auf dieser Grundlage nehmen gmail könnte. Leider gibt es keine DOM-Ereignisse, die uns die Geschichte Aktionen erfassen helfen können. Also statt (das ist der Teil, der zeigt, wie ich das Problem überwunden), führen wir eine unendliche Schleife, die für Änderungen an die Hash überprüft. Wenn es eine Änderung beobachtet, dann erkennen wir einen Klick auf die „Zurück“ oder „Vorwärts“ Taste des Browsers.

Bei der Lösung dieser machte ich ein praktisches Tool: die URL-Parser . Es kann GET params in der URL analysieren, sowie params in der Hash verschlüsselt. Geben Sie die Demo ein zu gehen!

Cheers!


über dieses Problem in IE: Ich wusste nicht, dass diese ‚Hash‘ basierte Lösung nicht auf IE funktioniert (armen alten Linux-Entwickler).

Aber für IE, können Sie einen versteckten iFrame verwenden, und verwenden Sie seine „url beeinflusst Geschichte“ Eigenschaft Geschichte zu implementieren. Ich weiß, dass diese Aussage fehlt Details, aber das ergibt sich aus meinen eigenen Mangel an Erfahrung mit IE.

Ich werde diese Lösung versuchen, und Follow-up:)

fand ich eine Vielzahl von Links im Internet, die richtige Implementierung der Geschichte zu tun iframes / Lage Hash verwenden. Ich habe nicht die Geduld haben, die Unterschiede zwischen den iframe-Schnittstelle auf verschiedenen Browsern zu graben.

Ich glaube, ich würde es vorziehen, die jQuery-Plugin . YUI hat auch eine Geschichte Manager.

Cheers!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top