如何将页面添加到新选项卡的历史记录中,以便后退按钮重新加载该页面?

Joh*_*hnK 5 javascript browser-history

从“页面 A”,我可以打开“页面 B”的新选项卡(当前的“旧”选项卡然后导航到此处不特别相关的另一个页面)。但我需要新选项卡在其历史记录中包含“页面 A”,以便按浏览器的后退按钮返回到该页面 - 不幸的是我无法做到这一点。

这是我正在尝试的:

var pageA = window.location.href;
var newTab = window.open("about:blank");
    window.setTimeout(function(){
        newTab.location.href = url;
        newTab.history.replaceState({fromBackClick: true}, "page1", pageA);
        newTab.history.pushState({fromBackClick: true}, "page2", url);
        newTab.setTimeout(function() {
            newTab.onpopstate = function () {
                //newTab.location.href = pageA; /* alternative to next line */
                newTab.location.reload(true);
                return true;
            };
        }, 100);
        window.location.href = new_url;
    }, 100);
Run Code Online (Sandbox Code Playgroud)

请注意,urlnew_url是传递给该代码所属函数的参数。

发生的情况是,新选项卡可以正常打开,其中包含“页面 B”的内容,并且当您单击“返回”时,“页面 A”url 会出现在地址栏中。不幸的是,尽管明显的 URL 发生了变化,但浏览器实际上并没有导航回实际的“Page A”页面。由于某种原因onpopstate,回调永远不会触发(即使我注释掉当前选项卡的 href 更改)。

有谁知道如何让回击实际上返回到地址栏中的 URL?

编辑

我知道这是可能的,因为如果您在选中某些合作伙伴复选框的情况下进行搜索,Kayak.com 会在 Chrome 中执行此操作。