5

Facebookでこの機能を確認しました。右下にチャットボックスを開いて、別のページ、たとえば友達のプロフィールやFacebook内の写真収集ページに移動すると、チャットボックスはリロードされません。そのままの場所に残ります(背景ページの上の別のレイヤーにあるかのように)。

当然のことながら、Facebookはページ自体をリロードするのではなくhistory.pushstate、関連する関数を使用してコンテンツを非同期にロードし、URLを動的に変更していると思いました(友達の名前の1つをクリックして取得すると、Firebugが確認しました)友達のプロフィールページに、それは実際にGET解雇されているリクエストです)。したがって、ページの読み込みが正確に行われていないため、チャットボックスはそのままアイドル状態になります。

ただし、バージョン10より前のバージョンpushstateではサポートされていませんIE。それでも、で問題なく動作IE9します。それで、誰かがそれをどのようにやっているのか教えてもらえますか?彼らはhistoryAPIをまったく使用していませんか、それとも何か違うものですか?

4

1 に答える 1

7

それは簡単な答えのある素晴らしい質問です。Facebookについてはよくわかりませんが、これは役立つはずです-History.js

History.jsは、すべてのブラウザーでHTML5 History / State API(pushState、replaceState、onPopState)を適切にサポートします。データ、タイトル、replaceStateの継続的なサポートを含みます。jQuery、MooTools、Prototypeをサポートします。HTML5ブラウザーの場合、これは、ハッシュを使用しなくてもURLを直接変更できることを意味します。HTML4ブラウザーの場合、古いonhashchange機能の使用に戻ります。

于 2013-03-30T00:02:56.467 に答える