Javascript;浏览器历史;是否有跨浏览器的方式来阅读上一页 url( history.go(-1) )和倒数第二页( history.go(-2) )?

Javascript; Browser history; Is there cross-browser way to read previous page url( history.go(-1) ), and second last page ( history.go(-2) )?

我需要动态获取和处理前两页的 url。试图做这样的事情但没有运气(使用 Chrome,但我需要所有浏览器的解决方案):

console.log(window.history.entries[window.history.index - 2]);

我唯一能成功拿到的对象是"history.lenght"。

这也给出了 "undefined" 多次:

for (var i = window.history.length; i >= 0; i--) {
    console.log(window.history[i]);
}

更新: 我正在添加 [后退] 按钮并且服务器上有弹出窗口,这破坏了我的代码。如果弹出窗口出现,我调用 history.go(-2)。我注意到它总是出现在 Chrome 和 Opera 中,并创建了解决方法。但这是一个糟糕的解决方案,我不确定它是否涵盖所有情况,这就是为什么我需要比较以前的 urls

if (navigator.userAgent.search("Chrome") > -1 || navigator.userAgent.search("OPR") > -1) {
    // insert conditional Chrome code here
    console.log("Go Back button: Chrome or Opera detected, go two pages back.");
    history.go(-2);
    return false;
} else {
    console.log("Go Back button: Browser is not Chrome, go one page back.");
    history.go(-1);
    return false;
}

将此放在您网站的所有页面上..

localStorage.setItem('2PagesAgo', localStorage.getItem('lastPage'));
localStorage.setItem('lastPage', localStorage.getItem('thisPage'));
localStorage.setItem('thisPage', location.href);

然后要获取最后一页和上一页就这样做..

var lastPage = localStorage.getItem('lastPage');
var 2PagesAgo = localStorage.getItem('2PagesAgo');

这将允许您跟踪用户在您的站点 上访问的最后 2 个页面。用户在您网站之外进行的任何浏览都属于您的业务 none。 :)