2012-05-03 152 views
0

心中已經關注到谷歌的Ajax頁面導航 '#' 符號

https://mail.google.com/mail/?shva=1#inbox 

特別#inbox

此URL可添加書籤,這可怎麼實現的?

+1

[github如何更改URL而不重新加載頁面?](http://stackoverflow.com/questions/7591087/how-does-github-change-url-without-reloading-a-page) – Quentin

+0

https://mail.google.com/mail/中的頁面只需加載JavaScript即可檢查哈希標記,然後異步修改頁面以顯示「收件箱」內容。它不那麼簡單,因爲它們採用其他機制不會打破後退按鈕並保留歷史記錄。 –

回答

1

因爲它正在通過Ajax調用由Javascript處理,這考慮了查詢字符串內部的內容。

JavaScript中所有的#標籤定位的一個例子是:當點擊

urlquery=location.href.split("#"); 

所以首先加載包含那種鏈接的頁面時,生成的頁面上的鏈接包含#錨,更改位置地址,但不會導致頁面重新加載,因爲它是當前頁面的錨點。然後,javascript鉤子到click事件,通過Ajax加載真實內容。

但是,由於位置欄上的地址已更改,因此可以將其存儲在書籤上。當書籤被加載時,它會使用javascript加載一個準系統網站,以再次檢測#中地址的哪些標籤,然後通過Ajax加載真實內容。

這就是爲什麼,例如,谷歌瀏覽器上的Twitter頁面的縮略圖總是顯示一個沒有消息的界面,因爲當生成縮略圖時,Ajax仍然沒有加載內容。