首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >浏览器后退按钮上的history.pushState中断

浏览器后退按钮上的history.pushState中断
EN

Stack Overflow用户
提问于 2012-11-05 21:35:57
回答 1查看 1.3K关注 0票数 3

我正在处理一个页面应用程序,其中每个部分都通过ajax加载。主页是它自己的网页,然后你点击“关于”,它带你到单一页面的应用程序。我已经获得了每个部分的url和浏览器上的后退和转发按钮来处理这个片段:

代码语言:javascript
复制
$('.down-button').on('click', function() {
        var stateObj = { principles: "about-principles" };
        history.pushState(stateObj, null, "about-principles");
        $('#principles-wrap').scrollintoview({ duration: 1000 });
    });

然而,当您单击所有返回主页,主页不刷新,您仍然在‘关于’的页面。或者,如果单击返回到主页的链接,则会得到404错误。

我遗漏了什么?

编辑

下面是代码的其余部分:

代码语言:javascript
复制
function button_scroll () {
// Call scrollIntoView js file into this 
$.getScript("/js/jquery.scrollintoview.min.js", function() {
    $('.down-button').on('click', function() {
        var stateObj = { principles: "about-principles" };
        history.pushState(stateObj, null, "about-principles");
        $('#principles-wrap').scrollintoview({ duration: 1000 });
    });
    $('.up-button-principles').on('click', function() {
        var stateObj = { mission: "about-mission" };
        history.pushState(stateObj, null, "about-mission");
        $('#mission-wrap').scrollintoview({ duration: 1000 });
    });
    $('.down-button-principles').on('click', function() {
        var stateObj = { snapshot: "about-snapshot" };
        history.pushState(stateObj, null, "about-snapshot");
        $('#snapshot-wrap').scrollintoview({ duration: 1000 });
    });
    $('.up-button-snapshot').on('click', function() {
        var stateObj = { principles: "about-principles" };
        history.pushState(stateObj, null, "about-principles");
        $('#principles-wrap').scrollintoview({ duration: 1000 });
    });
    $('.down-button-snapshot').on('click', function() {
        var stateObj = { people: "about-people" };
        history.pushState(stateObj, null, "about-people");
        $('#people-wrap').scrollintoview({ duration: 1000 });
    });
    $('.up-button-people').on('click', function() {
        var stateObj = { snapshot: "about-snapshot" };
        history.pushState(stateObj, null, "about-snapshot");
        $('#snapshot-wrap').scrollintoview({ duration: 1000 });
    });

});

}

代码语言:javascript
复制
//Dropdown
$(document).ready(function () {
$(window).on('load resize', function () {
    resize_mission();
    resize_principles();
    resize_snapshot();
    resize_people();
    button_scroll();
});
var dropDown = $('.dropdown');
$('h3.about').on('click', function() {
    dropDown.slideDown('fast', function() {
        var url = 'about2.php'
        var stateObj = { mission: "about-mission" };
        history.pushState(stateObj, null, "about-mission");
        $.get(url, function(data) {
            resize_mission();
            resize_principles();
            resize_snapshot();
            resize_people();
            button_scroll();
        });
    });
});

});

这就是我要做的。没有插件。

EN

回答 1

Stack Overflow用户

发布于 2012-11-05 21:46:15

您是否停止了“关于”页上单击事件到主页的默认操作?您是在使用preventDefault()stopPropagation()在链接上单击“关于”页面吗?另外,您是否停止了哈希更改事件的默认行为?我们可能需要看到更多关于历史实现的代码。你有没有在历史上使用任何插件?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13240783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档