Javascript 使用带有history.pushstate和popstate的后退按钮时,如何触发更改?

Javascript 使用带有history.pushstate和popstate的后退按钮时,如何触发更改?,javascript,html,back-button,pushstate,Javascript,Html,Back Button,Pushstate,对于js,我几乎是一个新手,所以如果我遗漏了一些非常简单的东西,我很抱歉 基本上,我已经对history.pustate和popstate的使用做了一些研究,并通过使用以下命令将查询字符串添加到url的末尾(?v=images)或(?v=profile)…(v表示“查看”): var url = "?v=profile" var stateObj = { path: url }; history.pushState(stateObj, "page 2", url); 我想这样做,以便我可以将内

对于js,我几乎是一个新手,所以如果我遗漏了一些非常简单的东西,我很抱歉

基本上,我已经对history.pustate和popstate的使用做了一些研究,并通过使用以下命令将查询字符串添加到url的末尾(
?v=images
)或(
?v=profile
)…(
v
表示“查看”):

var url = "?v=profile"
var stateObj = { path: url };
history.pushState(stateObj, "page 2", url);
我想这样做,以便我可以将内容加载到div中,但不必像使用
.load()
函数那样重新加载页面

然后我使用了以下代码:

$(window).bind('popstate', function(event) {
    var state = event.originalEvent.state;
$(document).ready()
部分中,稍后仅在
标记内尝试,但均无效

我不知道如何使其在我使用“后退”按钮时内容发生更改,或者至少使其能够触发我自己的函数来执行此操作;我想这和国家目标有关?!我只是在网上找不到任何能清楚解释这个过程的东西


如果有人能帮助我,那将是令人惊讶的,并提前感谢所有帮助我的人

只有当存在状态时,
popstate
才包含状态

事情是这样的:

  • 已加载初始页
  • 已加载新页面,并通过
    pushState
  • 按下后退按钮
  • 然后没有状态,因为初始页面是定期加载的,而不是使用
    pushState
    。结果,
    onpopstate
    事件被激发,状态为
    null
    。因此,当它为
    null
    时,意味着应该加载原始页面

    您可以实现它,以便一致地调用
    history.pushState
    ,并且您只需要提供如下状态更改函数:


    也许这不是最好的解决方案,也可能不适合你的需要。但对我来说,最好是重新加载页面。因此页面是一致的,它根据当前查询字符串加载所有内容

    $(document).ready(function() {
        $(window).on("popstate", function (e) {
            location.reload();
        });
    });
    

    非常感谢您对@pimvdb的帮助,更感谢您的快速回复。祝你一切顺利。非常感谢,这太完美了!您好,但是如果初始页面中的数据是由ajax从数据库动态生成的,如何做到这一点?
    $(document).ready(function() {
        $(window).on("popstate", function (e) {
            location.reload();
        });
    });