2012-06-08 99 views
24

可能重复:
Modify the URL without reloading the page变更网址在浏览器,而重载现有的页面地址栏

我正在寻找一种方法,使我的内部链接使用我当前的javascript功能的动画,而不会导致该页面时,你点击它们重新加载 - 但我想的网址在浏览器更新。

很多网站做到这一点,这里是一个很好的例子:http://grooveshark.com/#!/search?q=adf

他们如何获取URL无刷新页面更新?


更多细节:

目前我的页面上的链接看起来像<a href="#aboutus">About Us</a>,这通过JavaScript将带您到<div id="aboutus"></div>

的JavaScript看起来像:

$("#navigation a").click(function(e){ 
    animate(..scroll to section..); 
    e.preventDefault(); // <========== 
}); 

我相信“e.preventDefault()”是什么原因造成的网址不被更新,但如何防止浏览器重新加载页面时该网址已更改?

如何其他网站做呢?这个方法叫什么(所以我可以进一步研究它)?

谢谢。

+1

也可能有所帮助:https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history –

回答

23

Here is a similar question

下面是一个例子:

function processAjaxData(response, urlPath){ 
    document.getElementById("content").innerHTML = response.html; 
    document.title = response.pageTitle; 
    window.history.pushState(
     { 
      "html":response.html, 
      "pageTitle":response.pageTitle 
     }, 
     "", 
     urlPath 
    ); 
} 
+1

是啊,在pushState的似乎是缺少一块拼图。非常感谢你的欢迎好友 –

+0

;) –

1

像整个事情是用AJAX做在我看来。 URL中的#!导致浏览器解释URL的剩余部分作为一个锚 - 锚不会导致页面重新加载(事实上,服务器永远不会看到浏览器是在一个正常的HTTP的过程中有什么锚请求)。当URL更改时,Javascript接管,检查查询字符串,并使用Web服务从服务器加载适当的任何内容。

我没有看过深入太多,但这是它看起来像我。

相关问题