我有个很烦人的问题还没解决。
我正在使用“单页应用程序范式”开发一个Web系统,但没有任何框架,如角,骨干等。
我们只加载一次页面,几乎所有其他页面都是通过ajax加载的。当用户单击浏览器的“后退”按钮时,问题就开始了。由于没有页面重新加载,在用户登录系统后,没有更改url,并且当用户尝试使用浏览器中的“后退”按钮时,他被重定向到登录页,因为这是他“访问”的最后一页。
所有的内容都是通过ajax post加载的(不是很骄傲),现在我们必须支持back/foward按钮。我试过使用HTML5历史API,但没有成功。我能够注册'popstate‘回调,并尝试再次模拟一个帖子。但是页面中有我必须还原的字段。我不确定是否能找到它,但我需要的是像快照一样,在发送请求之前将页面还原到状态。
有人能帮我一把吗?
谢谢!(我很绝望:D)
发布于 2015-04-22 16:56:22
下面是一个简单的示例,说明如何做到这一点:
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");
}(欢呼声;)
发布于 2015-02-03 19:28:42
您可以使用片段标识符(URL中的#后面的内容)来跟踪您所在的“页面”,这就是一些框架所做的。大多数浏览器可以侦听对此的更改,而浏览器历史对此很有帮助,因此您可以在其更改时检索值并采取适当的操作。
https://stackoverflow.com/questions/28307015
复制相似问题