来自" 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);
请注意,url
和new_url
是传递给此代码所属函数的参数。
当新的标签页打开时,新标签打开正常,并且当您点击"返回" " Page A"网址显示在地址栏中。不幸的是,虽然明显的网址发生了变化,但浏览器实际上还没有导航回实际的网页A"页。出于某种原因,onpopstate
回调永远不会触发(即使我注释掉当前标签的href更改)。
有没有人知道怎么回事实,回击实际上会回到地址栏中的URL?
我知道这是可能的,因为如果您选中某些合作伙伴复选框,Kayak.com会在Chrome中执行此操作。