Javascript 动态更改内容并替换当前URL

Javascript 动态更改内容并替换当前URL,javascript,jquery,ajax,html5-history,Javascript,Jquery,Ajax,Html5 History,因此,我试图获得的是一个链接列表,单击其中任何一个链接都会将div的内容更改为“whatever”。那很容易,我已经做到了 我遇到的问题是,如何获得对更改内容的某种永久链接 say main domain is www.example.com then you click link X and content Y shows up on the page then the URL should change to www.example.com/SOMETHINGHERE --all g

因此,我试图获得的是一个链接列表,单击其中任何一个链接都会将div的内容更改为“whatever”。那很容易,我已经做到了

我遇到的问题是,如何获得对更改内容的某种永久链接

 say main domain is www.example.com
 then you click link X and content Y shows up on the page
 then the URL should change to www.example.com/SOMETHINGHERE
 --all good so far--
 then using the new link should take you to the site with the changed content
让我们获取一些示例代码:

非常基本的东西。这就是它的工作方式。现在我在谷歌上搜索了一下,似乎我需要使用历史API,甚至是库。我做了一些修补,但我是个新手,整个历史都有点混乱

一个接近我想要实现的例子是 导航到“实验”部分,查看如何运行每一个

所以基本上我想问的是,你是否可以帮助我使用历史api(如果这真的是这样做的话——我可能错了),也许给我一个例子或者其他一些东西,而不仅仅是链接文档,或者如果有其他方法我可以尝试实现这一点


提前感谢。

使用
window.history.pushState()
函数,您可以更改地址栏中的内容。pushState()是指将站点处于的状态按入历史记录的操作,以便用户可以使用浏览器导航按钮进行导航:

history.pushState(stateObj, 'page title', 'pathname');
因此,在代码中实现它:

$('.linx').click(function (event) {
    event.preventDefault();
    $('#loadhere').load(this.href);
    // use push state here        
    var stateObj = {'foo': 'bar'};
    history.pushState(stateObj, this.href.replace('.html', ''), this.href);
});
stateObject
可以存储一些定义站点所处状态的数据,即勾选的复选框或滚动状态

您可以使用
历史记录.state
访问此对象。因此,对于上面的示例:

history.state.foo = "bar"
注意:这是一个现代的web标准,必须采取措施确保与旧浏览器兼容


阅读有关
history.pushState()

的更多信息,这样可能会对您有所帮助。
window.history.pushState(“对象或字符串”、“标题”、“新url”)<围绕着使用它来更改地址栏中的内容,以及使用JS来控制屏幕上的内容/I see。我有点理解这一点,有一个问题:如果我实现了这一点,然后向某人发送一个链接,例如www.example.com/something.html,而他们以前从未访问过该网站,这会将他们带到内容已更改的页面,还是仅仅用一个不同的url向他们提供索引页面?事实上,我已经找到了答案。结果比我想象的要简单得多。谢谢你的帮助。
history.state.foo = "bar"