首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AJAX后浏览器历史记录

AJAX后浏览器历史记录
EN

Stack Overflow用户
提问于 2015-02-03 19:20:26
回答 2查看 1.7K关注 0票数 1

我有个很烦人的问题还没解决。

我正在使用“单页应用程序范式”开发一个Web系统,但没有任何框架,如角,骨干等。

我们只加载一次页面,几乎所有其他页面都是通过ajax加载的。当用户单击浏览器的“后退”按钮时,问题就开始了。由于没有页面重新加载,在用户登录系统后,没有更改url,并且当用户尝试使用浏览器中的“后退”按钮时,他被重定向到登录页,因为这是他“访问”的最后一页。

所有的内容都是通过ajax post加载的(不是很骄傲),现在我们必须支持back/foward按钮。我试过使用HTML5历史API,但没有成功。我能够注册'popstate‘回调,并尝试再次模拟一个帖子。但是页面中有我必须还原的字段。我不确定是否能找到它,但我需要的是像快照一样,在发送请求之前将页面还原到状态。

有人能帮我一把吗?

谢谢!(我很绝望:D)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-22 16:56:22

下面是一个简单的示例,说明如何做到这一点:

代码语言:javascript
运行
复制
var state = null;
$(document).ready(function($) {   
//this is my menu... I created a simple menu just for testing :)
    $('nav li').on('click', function(){
        var title = $(this).text().toLowerCase();
        loadPage(title);
        window.history.pushState(title, null, '#'+title);
    });


    window.addEventListener('popstate', function(event) {
        state = event.state;
        console.log("State: "+state);
        if(state != null && state != "null"){
            loadPage(state);
        }
    });
});

function loadPage(page) {
    $("#content").load(page+".html");
}

(欢呼声;)

票数 3
EN

Stack Overflow用户

发布于 2015-02-03 19:28:42

您可以使用片段标识符(URL中的#后面的内容)来跟踪您所在的“页面”,这就是一些框架所做的。大多数浏览器可以侦听对此的更改,而浏览器历史对此很有帮助,因此您可以在其更改时检索值并采取适当的操作。

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

https://stackoverflow.com/questions/28307015

复制
相关文章

相似问题

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