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)
请注意,url和new_url是传递给该代码所属函数的参数。
发生的情况是,新选项卡可以正常打开,其中包含“页面 B”的内容,并且当您单击“返回”时,“页面 A”url 会出现在地址栏中。不幸的是,尽管明显的 URL 发生了变化,但浏览器实际上并没有导航回实际的“Page A”页面。由于某种原因onpopstate,回调永远不会触发(即使我注释掉当前选项卡的 href 更改)。
有谁知道如何让回击实际上返回到地址栏中的 URL?
我知道这是可能的,因为如果您在选中某些合作伙伴复选框的情况下进行搜索,Kayak.com 会在 Chrome 中执行此操作。
| 归档时间: |
|
| 查看次数: |
2131 次 |
| 最近记录: |