Javascript 如何在java脚本中更改浏览器历史记录

Javascript 如何在java脚本中更改浏览器历史记录,javascript,ajax,Javascript,Ajax,我正在创建一个小型web应用程序,并在div中使用ajax加载我的页面 每当用户点击链接,ajax请求页面,然后更新我的div和url。。 在ajax请求之后,当我尝试刷新页面时 它工作正常,并显示当前页面,但当我点击后退按钮时,它是更改顶部url,而不是页面及其内容 这是我的密码 $.ajax({ url: link, type:'POST', data : name, success: function(data) { $("#main").html(data); hist

我正在创建一个小型web应用程序,并在div中使用ajax加载我的页面

每当用户点击链接,ajax请求页面,然后更新我的div和url。。 在ajax请求之后,当我尝试刷新页面时

它工作正常,并显示当前页面,但当我点击后退按钮时,它是更改顶部url,而不是页面及其内容 这是我的密码

$.ajax({ 
url: link, 
type:'POST', 
data : name, 
success: function(data) { 
$("#main").html(data);  
  history.pushState({foo:'bar'}, title, link);
  }
 }
});

正如@Slaks在评论中所说,您需要处理
窗口.onpopstate

文件:

返回不会改变文档的内容 在上一步中,尽管文档可能会更新其内容 在收到
popstate
事件时手动执行

为此,您需要一个
状态对象
,该对象在
pushState
调用中作为参数传递。状态对象是与新历史记录条目关联的javascript对象。popstate事件仅在活动历史记录条目更改时触发,它将有一个
状态对象的副本作为参数。
正如docs所说,
history.pushState()
(和
history.replaceState()
)方法仅添加(和修改)历史记录条目,原因如下:

调用
history.pushState()
history.replaceState()
不会触发popstate事件。只有在同一文档的两个历史记录条目之间导航时,执行浏览器操作(如单击后退按钮(或在JavaScript中调用
history.back()
)才能触发popstate事件


正如@Slaks在评论中所说,您需要处理
窗口.onpopstate

文件:

返回不会改变文档的内容 在上一步中,尽管文档可能会更新其内容 在收到
popstate
事件时手动执行

为此,您需要一个
状态对象
,该对象在
pushState
调用中作为参数传递。状态对象是与新历史记录条目关联的javascript对象。popstate事件仅在活动历史记录条目更改时触发,它将有一个
状态对象的副本作为参数。
正如docs所说,
history.pushState()
(和
history.replaceState()
)方法仅添加(和修改)历史记录条目,原因如下:

调用
history.pushState()
history.replaceState()
不会触发popstate事件。只有在同一文档的两个历史记录条目之间导航时,执行浏览器操作(如单击后退按钮(或在JavaScript中调用
history.back()
)才能触发popstate事件


您需要处理
popstate
事件。是的,我搜索了它,但我不明白,cna请告诉我它是如何工作的?谢谢您正在查找文档。您需要处理
popstate
事件。是的,我搜索了它,但我不明白,cna请告诉我它是如何工作的?谢谢你在找文件。