当url不存在时如何处理popstate



我想能够做两件事与html5 popstate,我不使用任何插件只是这两个方法:

推状态:

function contentLoaded(...) {
    ...
    window.history.pushState({ pageUrl: url }, url, url);
    ...
}
流行状态:

$(window).bind("popstate", function (e) {
    if (event.state) {
        loadContent(event.state.pageUrl);
    }
});

现在,如果我删除一个记录,I want to avoid popping a state which couldn't be loaded,只是跳过它,并尝试弹出下一个。

第二个问题是:How can I avoid try popping from an empty stack(我有一个后退按钮在我的应用程序,但我可以摆脱它与一个适当的理由),但保持清楚,如果内容不能加载或如果没有更多的项目在堆栈

历史记录不能在事后更改。你应该把推送/popstate功能从内容加载功能中分离出来;想想典型的客户端MVC框架中的"路由器"或"导航器"模式。如果一个状态无效,内容加载代码可以"重定向"到另一个状态(通过调用pushState),就像你在常规的服务器端应用程序中所做的那样。

提醒一下,无论状态是内部弹出的还是使用相同的url实际加载的,客户端应用程序都应该工作相同,即HTML5历史支持必须是透明的,或者换句话说,url必须单独包含构建特定视图的所有信息(但在popstate的情况下,我们可以欺骗和重用现有的状态来加快速度)。

相关内容

  • 没有找到相关文章

最新更新