Wie behandelt Gmail in Rich-JavaScript-Systemen die Vor- / Zurück-Schritte?

8

Gmail scheint eine clevere Möglichkeit zu haben, die Zurück- / Vorwärtstasten in einer umfangreichen JS-Anwendung zu verwenden.

In meiner Organisation haben wir das jQuery-Verlaufs-Plugin getestet. Das Plugin führt im Prinzip alle 100ms eine Funktion aus, die die URL analysiert und prüft, ob sie sich geändert hat. Der Verlauf wird von HTTP-Ankern verfolgt. Wenn der Anker geändert wurde, ruft das Plug-in einen benutzerdefinierten Rückruf auf, wobei der neue Anker übergeben wird, sodass die Seite benutzerdefiniertes Verhalten zum Laden des neuen Inhalts ausführen kann.

Meine Organisation hat festgestellt, dass das jQuery-Verlaufs-Plugin keine Produktionsqualität hat. Ich mache ihnen keine Vorwürfe, um ehrlich zu sein, weil Sie die Browser Ihrer Benutzer nicht wirklich zwingen wollen, alle 100ms eine Funktion auszuführen. Außerdem machte es den JS-Code nahezu unmöglich zu debuggen, da das Klicken auf "Weiterbrechen" in Firebug oder einem ähnlichen JS-Debugger immer das jQuery-Verlaufsereignis auffängt und keine anderen Ereignisse ein Blick hinein werfen würden.

Also haben wir an dieser Stelle aufgegeben, die Back / Forward-Funktionalität im Browser zu implementieren. Ich habe jedoch kürzlich festgestellt, dass Gmail dies ziemlich gut implementiert. Es verwendet auch den HTTP-Ankerwert, aber ich habe "Break On Next" gedrückt und Gmail führt nicht alle 100 ms eine Funktion aus. Wie kann Google Mail dieses Back / Forward-Verhalten implementieren?

    
Kidburla 11.08.2010, 15:29
quelle

2 Antworten

6

Vielleicht sprechen Sie hier über das jQuery History-Plugin: Ссылка Die in vielen Produktionsstätten verwendet wurde; Einer meiner Favoriten ist Ссылка

Wenn ja, verwendet es einen 200ms-Test für Browser der älteren Generation , die die% nicht implementieren. co_de% -Ereignis nativ. Wenn dieses Ereignis nativ nicht implementiert ist, müssen Sie die Funktionalität umgehen, indem Sie eine Intervalländerung verwenden - es gibt einfach keinen anderen Weg zu meinem Wissen. Glücklicherweise unterstützen nun die neuesten Versionen aller gängigen Browser das onhashchange-Ereignis nativ, so dass diese Überprüfung nicht mehr benötigt wird.

Aber ach, lassen Sie uns gehen, was diese 200ms Intervallüberprüfung tut. Wenn sie auf IE6 oder 7 sind, überprüft sie den Zustand eines Iframes (da in diesen Browsern ein Iframe erforderlich ist, um die Zurück- und Vorwärts-Schaltflächen zu emulieren - wo für andere Browser kein Iframe erforderlich ist). Wenn sie einen anderen älteren Browser verwenden, der kein IE ist, kann sie einfach onhashchange bei der Überprüfung verwenden (ohne einen Iframe wie zuvor erläutert). Beide Arten von Prüfungen sind so konzipiert, dass sie extrem schnell und so minimal wie möglich sind, wodurch der notwendige Aufwand auf ein Minimum reduziert wird. Es dreht sich alles darum, was der Browser tatsächlich tun will, und versucht es mit möglichst wenig intensivem Code.

Hinweis: Vor der v1.4.2-final-Version (12. August 2010) von jQuery History waren IE8 und höher die einzigen Browser, die onhashchange nativ unterstützt haben. Dies wurde in allen neueren Versionen des jQuery-Verlaufsprojekts behoben.

    
balupton 11.08.2010, 15:52
quelle
1

Vielleicht möchten Sie diese vorherige Frage überprüfen:

Gibt es einen Weg dazu? Fang das Zurück Knopf Ereignis in Javascript?

Es scheint so, als ob die Art und Weise, wie es in jQuery gemacht wird, der einzige Weg ist, dies zu tun, denn genau das macht YUI auch:

Ссылка

    
Gabriel 11.08.2010 15:38
quelle