pushState()没有在beforeunload上工作,popState()没有在load,History API上工作

时间:2017-08-01 18:53:09

标签: javascript jquery html browser-history

我有一个网站。主页面包含各种内容部分,在单击某些按钮时淡入和淡出。我非常希望在用户点击页面时推送包含相关状态信息的两个重要对象的状态。这样,当他们返回时,显示正确的内容并突出显示正确的按钮。我在页面卸载之前这样做:

    window.addEventListener("beforeunload", function () {
        history.pushState(nodeContainer, '', currNode.contentId);
        history.pushState(currNode, '', currNode.contentId);
      return;
    });

当页面重新加载时,我调用popstate方法,如下所示:

    window.addEventListener('popstate', function(e) {
        console.log('Event ', e);
    });

然而,这不起作用。仅在单击两次返回空状态对象时才调用popstate方法。我在SO上发现了类似的问题并完成了我的研究。没有帮助。

1 个答案:

答案 0 :(得分:0)

beforeUnload只会处理同步请求。您需要找到阻止事件循环的方法。我过去曾经使用它来向服务器发送同步请求,检查用户是否正在下载文件,并警告他们离开会停止下载。

如果它认为可以导致弹出窗口,浏览器也可能会忽略该代码。

这里有更多信息 https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload