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

时间:2015-08-18 21:11:35

标签: javascript browser-history

来自" Page A"我可以为" Page B"打开一个新选项卡。 (当前,"旧"标签然后导航到另一个与此处不相关的页面)。但是我需要新标签才能获得" Page 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);

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

当新的标签页打开时,新标签打开正常,并且当您点击"返回" " Page A"网址显示在地址栏中。不幸的是,虽然明显的网址发生了变化,但浏览器实际上还没有导航回实际的网页A"页。出于某种原因,onpopstate回调永远不会触发(即使我注释掉当前标签的href更改)。

有没有人知道怎么回事实,回击实际上会回到地址栏中的URL?

修改

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

0 个答案:

没有答案