2013-03-24 12 views
5

Ich beobachtete diese Funktion in Facebook, wenn Sie unten rechts eine Chat-Box geöffnet haben und auf eine andere Seite gehen, sagen Sie das Profil Ihres Freundes oder eine Fotosammlung darin Facebook, die Chatbox wird nicht neu geladen, sie bleibt wo sie ist (wie in einer separaten Ebene über der Hintergrundseite).Facebook Chatbox lädt nicht zwischen den Seiten

So dachte ich natürlich, dass Facebook die Seite nicht per se neu lädt, sondern history.pushstate und verwandte Funktionen verwendet, um den Inhalt asynchron zu laden und die URL dynamisch zu ändern (Firebug hat es bestätigt, wenn Sie auf einen Ihrer Name des Freundes und wird auf die Profilseite Ihres Freundes gebracht, es ist eigentlich eine GET Anfrage, die gefeuert wird). Da es nicht genau so viele Seiten laden kann, kann die Chatbox einfach im Leerlauf bleiben.

Jedoch wird pushstate nicht von IE vor Version 10 unterstützt. Dennoch funktioniert es auch gut in IE9. Kann mir jemand sagen, wie geht es ihnen? Verwenden sie überhaupt die API history oder etwas anderes?

Antwort

7

Das ist eine gute Frage mit einer einfachen Antwort. Ich bin nicht sicher über Facebook, aber dies sollte Ihnen helfen - History.js

history.js anmutig die HTML5 History/Staat APIs unterstützt (pushstate, replaceState, onPopState) in allen Browsern. Einschließlich fortgesetzter Unterstützung für Daten, Titel, replaceState. Unterstützt jQuery, MooTools und Prototype. Für HTML5-Browser bedeutet dies, dass Sie die URL direkt ändern können, ohne Hashes mehr verwenden zu müssen. Für HTML4-Browser wird wieder die alte onhashchange-Funktionalität verwendet.

+0

Ja, ich weiß, das kam. Aber das Problem ist, dass es für HTML4-Browser sagt, es verlässt sich auf 'onHashChange' -Funktion. Jedoch, für IE89, sehe ich klar, dass es mehrere Fälle gibt, in denen nicht nur der Hash geändert wird, sondern auch der Pfad. Auch in diesen Fällen lädt IE9 die Seite nicht neu (und somit bleibt die Chat-Box). ändert nur dynamisch die URL .. – SexyBeast

+0

Okay, ich habe es, alle neuen Pfade fragmentiert und andere Sachen sind nach dem Hash-Zeichen hinzugefügt, was bedeutet, dass sie alle Teil des Hash sind. Recht? – SexyBeast

+0

Richtig, ich habe es nicht getestet, aber es scheint so zu sein. Das beste Beispiel ist die mobile Version von Facebook (https://m.facebook.com/), die ein Hash-System enthält. –

Verwandte Themen