我在Facebook上觀察過此功能,當您在右下角打開聊天框,然後轉到其他頁面,比如朋友的個人資料或某個照片收藏頁面Facebook,聊天框不會重新加載,它仍然處於它的位置(就像在背景頁面頂部的單獨圖層中一樣)。Facebook聊天箱不會在頁面間重新加載
所以很自然,我認爲Facebook本身並沒有重新加載頁面,它使用history.pushstate
和相關函數來異步加載內容,並動態改變URL(Firebug證實了它,如果你點擊其中一個朋友的名字,並被帶到你的朋友的個人資料頁面,實際上這是一個GET
請求正在被解僱)。因此,由於沒有完全加載任何頁面,聊天室可以閒置,因爲它是。
但是,在版本10之前,IE
不支持pushstate
。但是,它在IE9
中也可以正常工作。那麼誰能告訴我他們是怎麼做到的?他們是否全都使用history
API,或者有什麼不同?
是的,我知道這是即將到來的。但問題在於它對HTML4瀏覽器說,它依賴'onHashChange'函數。但是,對於IE89,我清楚地看到,有多種情況下,不僅哈希值被更改,而且路徑也會改變。在這些情況下,IE9也不會重新加載頁面(因此聊天框會保留)。只是動態地改變了URL .. – SexyBeast 2013-03-30 06:42:24
好吧,好吧,我明白了,所有新的路徑碎片化和其他東西都加在散列符後面,這意味着它們都是散列的一部分。對? – SexyBeast 2013-03-30 06:52:33
對,我沒有測試它,但它似乎是這樣的。最好的例子是Facebook的移動版本(https://m.facebook.com/),其中包含一個散列系統。 – 2013-03-30 17:03:00