手动添加浏览器历史记录条目(跨浏览器)

时间:2017-07-26 08:13:38

标签: javascript jquery html

我不知道是否有可能以任何方式实现,我想做什么。 我的单页网站有一些部分。像这样:

<div class="page pageOne"></div>

<div class="page pageTwo"></div>

<div class="page pageThree"></div>

<div class="page pageFour"></div>

当您打开网站时,第2,3和4页获得了display:none和第一个display:block。当我点击导航中的链接时,当前的“页面”淡出,无论你点击了什么链接,所属部分都会淡入。链接如下所示:

<a class="pageChange" href=".pageFour">Four</a>

这是jQuery代码:

$(".pageChange").click(function(e){
    e.preventDefault();
    var href = $(this).attr("href");
    $(".page").fadeOut(200);
    setTimeout(function(){
        $(href).fadeIn();
    }, 200);
});

显而易见的是,当我点击浏览器后退按钮时,它不会淡化上一部分。它将返回到我打开的上一个网站。
< br />所以我的问题是:有没有办法在点击链接时在浏览器中添加历史记录条目?所以我可以按后退按钮,它会淡化上一节的内容。
要在点击链接之前获取可见部分,我已经这样做了:

var currentPage = $(".page:visible").attr('class').split(' ')[1];

但不幸的是,这对我想达到的目标毫无用处。

如果有人可以帮助我解决这个问题(或者甚至是可能的话),我会非常高兴。

2 个答案:

答案 0 :(得分:2)

您必须使用浏览器History API来更新网址。然后,您可以使用onpopstate检测来回移动,并相应地调用fadeInfadeOut方法。

答案 1 :(得分:0)

我有超级相似的情况!我的朋友将使用的最佳解决方案https://alvarotrigo.com/fullPage/您可以阅读代码,了解他在github上的表现。基本上你必须使用一个来回浏览功能来记录滚动和后来的处理。