2011-09-14 14 views
1

facebookをブラウズしてリンクをクリックすると(友達のプロフィール、ホームボタンなど)、すべてのページが更新されますが、チャットは更新されません。facebookはチャット関連のものをリロードせずにページ全体をリロードする方法は?

ブラウザにページをリロードするように指示することはできますが、ページの一部をリロードしないでください。

+1

魔法の単語はAJAXです。私はFacebookを使用していませんが、Ajaxリクエストを使用して「ページ全体」をロードし、ロードされたデータでDOMを更新するか、ページ全体をロードしてチャットを更新していますこれまでと同じように見える。 – sinelaw

+0

あなたはFacebookのすべてのリンクがAJAXがロードされていることを意味します...それは解決策かもしれません。 –

+1

@ yes123:かなり。 –

答えて

4

あなたはthis documentをチェックアウトする場合があります。基本的に、HTML5では実際にページをリロードせずにアドレスバーに表示されるURLを変更できる機能(history.pushState(),history.replaceState()およびwindow.onpopstate)が導入されました。

+0

ニースですが、使用している(唯一の)方法であれば驚いています。 Facebookは、HTML5対応のブラウザを持っていない場合でも動作します。私は推測しています。 – sinelaw

+0

はい、おそらく動作しますが、おそらく、チャットの状態(開いているチャットなど)をクッキーなどに格納することによって正常にダウングレードされます。また、非常に高速なサーバー。 – Felix

+0

アドレスが変わってもAJAXの読み込みはできません!それはこのフェリックスのようなものでなければなりません。ありがとうございました – dynamic

-1

は、AJAXの行動にまたはのようなものと考えられます。

<body> 
    <iframe src="content.php" id="content_frame"> 
    <p>Browser does not support iframes.</p> 
    </iframe> 
    <iframe src="chat.php" id="chat_frame"> 
    <p>Browser does not support iframes.</p> 
    </iframe> 
</body> 
+0

私はここに-1を与えていないが、そうではない – dynamic

+0

質問の最後の部分は、「ブラウザにページをリロードするように指示することはできますが、その一部をリロードしないでください」ということでした。だから私はFacebookのことを意味するわけではありませんが、それを行う方法を指定しました。 – rlods

2

はここでFacebookが実際に行うように見えるものです:それをサポートするブラウザで

  1. 、彼らはIEでhistory.pushState(私は最新のChromeとFirefoxのをテストしてみた)
  2. を使う(「doesnのどのtはpushStateをサポートしています)、他のブラウザでも推測していますが、URLを変更することはありません。ハッシュタグを使用しています。 facebook.com/eventsからfacebook.com/?sfrm=1#!/events/(またはそれに似たもの)へのhrefを置換するclickイベントのjavascriptハンドラがあります。
関連する問題