【发布时间】:2019-04-23 09:01:04
【问题描述】:
我对 javascript 和历史 API 很陌生。
我正在发出 AJAX GET 请求以加载网站上的下一页或上一页。
function ajax_get_update(url)
{
$.ajax({
async: true,
type: "GET",
url: url,
cache: true,
success: function(result){
sessionStorage.setItem("result", result);
update_content(result);
}
});
history.pushState(url, url, url)
}
AJAX 部分和更改页面内容工作得非常好。如您所见,我正在使用history.pushState(url, url, url) 将下一页添加到历史记录中,因此我可以使用后退按钮返回该页面。
url 看起来像这样 http://127.0.0.1:8000/?page=2
问题是如果我从page2 继续page3 然后再到page3 等等,那么历史将包含所有这些转换,当我点击返回按钮时,我会不断改变在我最终到达page1 之前,在page2 和page3 之间来回几次。我要的是page3 -> page2 -> page1等等。
你会如何解决这个问题?
【问题讨论】:
-
这就是历史记录的工作方式:) 您可以尝试将您的
history.pushState()移动到成功处理程序中,并仅在某些情况下更新历史记录。我还建议仅在 ajax 请求成功的情况下更新您的历史记录,否则您的应用程序可能会出现无效状态。 -
@gearsdigital 好电话。关于如何在后退按钮上实现此行为
page3 -> page2 -> page1的任何想法?而不是page3->page2->page3->page2... -
您有关于当前页面的任何信息吗?除了
url? -
@gearsdigital 不是真的...虽然内容是独一无二的
-
但是参数总是
?page?
标签: javascript url url-rewriting html5-history