2012-01-10 52 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