如何在 Javascript 的 popstate 事件上执行 location.reload() 时维护浏览器历史记录

Rah*_*rma 5 javascript jquery redirect browser-history

因此,我有一个场景,我正在使用函数生成所有 URL history.pushState。我没有为此使用任何服务器端技术。我只从服务器获取所有数据一次,然后使用Javascript.

现在我遇到的问题是使用popstate基本上模仿浏览器后退按钮行为的功能。

只需单击一次后退按钮即可一切正常。

    $(window).on('popstate', function (event) {
        location.reload(true);
        //window.location.href = document.location;
        //console.log("location: " + document.location);
    });
Run Code Online (Sandbox Code Playgroud)

在一次后退按钮事件之后,我无法看到浏览器以前的任何历史记录。我假设这是因为location.reload方法而发生的。我也尝试存储我的所有位置,然后进行重定向,但同样的事情,浏览器历史记录在一次刷新后就会丢失。

有没有一种方法可以实现此目的,而浏览器不会丢失多次后退按钮单击的历史记录?

如果有一个JQuery选择,那么如果有人可以分享他们在这方面的知识,那就太好了。

BNi*_*sou 0

嗯,这实际上是不可能的。我正在考虑的唯一技巧是更改事件触发的window.location.href时间popstate,并将您的历史记录作为 URL 参数传递。

$(window).on('popstate', function (event) {
    window.location.href = 'https://here.com?history = ' + yourHistory;
});
Run Code Online (Sandbox Code Playgroud)

您需要弄清楚如何使用此方法发送历史记录,并在到达新页面时处理它,以便在用户再次单击后退按钮时能够再次发送它。您还必须确保生成的 URL 不会太长。