2012-01-10 103 views
4

我的網站上,我想實現AJAX頁面加載,在Facebook,Twitter上的相對較小的網站Kotaku Gaming看到,和。

基本上,這就是我想做的事:有一個頭剩下的整個域上的所有網頁靜態的,只有將內容加載到一個特定的容器,使用AJAX和jQuery。

jQuery的$ .load()幾乎是完美的 - 但只差不多。這基本上是我使用的代碼:

$("#content").load("site.html"); 

但是,當使用此功能「加載」另一個頁面時,URL不會更改。這將破壞書籤以及鏈接,因此是不可接受的。網址需要更改。

$ .get()的問題在於頁眉確實隨頁面的其餘部分一起更改,這當然不是我要找的內容。

任何人都可以幫我完成這個嗎?如果上面提到的網站可以做到這一點,爲什麼我不能?

+0

這可能是一個重複http://stackoverflow.com/questions/6118693/how-can-i-change-the-page-url-without-refreshing-the-page – SpoonNZ 2012-01-10 01:58:59

回答

1

How can I change the page URL without refreshing the page?第一個答案應該做的伎倆爲您服務 - 使用pushState的推新地址。請注意,這在舊版瀏覽器中不起作用,我建議最好的理論是回到傳統的方法。

+0

你可以使用[History.js ](https://github.com/balupton/History.js)以實現向後兼容。 – bfavaretto 2012-01-10 02:02:40

+0

「對象或字符串」是什麼意思? – LonelyWebCrawler 2012-01-10 02:04:33

+0

您需要傳遞一些信息,以便在有人擊中「返回」時知道要加載的頁面。我建議「oldpage.html」可能是一個好的開始。然後你可以設置一個popstate事件監聽器來處理這個事件。更多信息請訪問https://developer.mozilla.org/en/DOM/window.onpopstate(從上面的鏈接鏈接) – SpoonNZ 2012-01-10 02:13:23

0

如果你想要的網址在每個頁面載入改變,但想報頭保持不變,它可能是值得剛創建的標題模板,然後改變每個頁面的內容部分。

如果你正在使用鏈接PHP的東西,這應該是非常簡單的,包括/ require或類似。

+1

是的,但是如果我使用相同的標題加載了新頁面,頁面仍然會變爲空白,然後加載新的站點。我想讓頁眉在頁面加載之間駐留。 – LonelyWebCrawler 2012-01-10 02:29:22

+1

在這種情況下,您可能可以將某些東西與錨點和'window.location.hash'放在一起 - 沿着使用ajax替換內容的行,然後使用散列「www.example.com/#/ page1'作爲後退按鈕和書籤的搜索 – Mercurybullet 2012-01-10 02:39:04

+0

這些錨點的訣竅是,您可以更改它們而無需重新加載頁面並查看空白頁的閃光燈 – Mercurybullet 2012-01-10 02:41:41