【问题标题】:Refresh page once when popstate is fired?触发popstate时刷新页面一次?
【发布时间】:2013-05-12 08:57:00
【问题描述】:

我有一个通过scrollTop() 导航的长页面。

因为 scrollTop() 不能与浏览器的后退按钮正常工作(浏览器会忽略它)我想尝试在每个 popstate 上刷新浏览器,然后它会工作并且用户滚动位置将是它应该在的位置是。

问题是我的代码导致无限刷新。

    $(window).bind('popstate', function(event) {
        //var path = window.location.pathname;
        //var filename = path.match(/.*\/([^/]+)\.([^?]+)/i)[1];
        //var pos = "#" + filename;
        //$(document).scrollTop(pos);
        location.reload();
    });

如何修复它只刷新一次?我试过one(),但还是一样。

【问题讨论】:

    标签: javascript jquery scrolltop page-refresh html5-history


    【解决方案1】:

    有很多用于浏览器历史记录的 jQuery 和纯 JS 插件,可以满足您的需求。
    我认为刷新页面不会为您启用浏览器历史记录。

    jQuery BBQ:
    http://benalman.com/projects/jquery-bbq-plugin/
    演示:
    http://benalman.com/code/projects/jquery-bbq/examples/fragment-basic/#chicken.html

    历史 JS
    https://github.com/browserstate/history.js/

    【讨论】:

    • 我正在使用history api,问题在于滚动,而不是一般的历史实现。浏览器在向后/向前导航时控制滚动位置。 ajax 的东西,我也有工作得很好。
    • 如果我能让浏览器在 popstate 上只刷新一次就可以了。所有插件都不能为此工作,因为滚动,如果它只是 ajax,那么是的,它们会工作。
    猜你喜欢
    • 2015-04-20
    • 2011-07-04
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    相关资源
    最近更新 更多