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

时间:2018-02-19 18:22:20

标签: javascript browser-history

我需要动态获取并处理前两页的网址。试图做这样的事情,但没有运气(使用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中,并创建了解决方法。但这是一个糟糕的解决方案,我不确定它是否涵盖所有情况,这就是为什么我需要比较以前的网址

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;
}

1 个答案:

答案 0 :(得分:2)

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

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个页面。任何浏览用户在您网站之外进行的操作都不符合您的要求。 :)