【问题标题】:How to use history.js?如何使用history.js?
【发布时间】:2012-04-15 15:28:51
【问题描述】:

在我的网站中,左侧有一个导航栏。当我单击链接时,他们会更改我页面上的#container div,但不会通过 ajax 更改其他内容。我想放置后退和前进按钮,这将使#container div 在状态下前进和前进。我读到 history.js 将是最好的选择,我浏览了 html5 history api,但我不明白如何解决我的问题。另外,我将如何实现刷新按钮?

【问题讨论】:

    标签: jquery ajax history.js


    【解决方案1】:

    听起来您要查找的内容类似于 PJAX

    需要明确的是,HTML5 History API(History.js 实现/shims)并不直接维护您的应用程序的状态。相反,它提供了一种将窗口 URL 中的更改映射到负责实际呈现更改的函数的机制。 readme 提供了一些关于如何实现这一点的见解:

    History.Adapter.bind(window, 'statechange', function() {
        var State = History.getState(); 
        History.log(State.data, State.title, State.url);
    });
    

    如果您不想记录状态,而是希望更改容器的内容(不使用 PJAX 或类似库),则可以在每次调用 pushState 时存储 #container 的内容并调整处理函数做这样的事情:

    History.Adapter.bind(window, 'statechange', function() {
        var State = History.getState(); 
        $('#container').empty().append(State.data.content);
    });
    
    History.pushState({content:"Hello, world!"}, "State 1", "?state=1");
    

    当然,您需要更改它以反映您的具体情况。

    【讨论】:

    • 好的,我检查了 pjax 的东西,它似乎工作。虽然我不知道如何让加载 gif 工作。这是我在单击链接$('li a').pjax('#container'); 时执行pjax 的代码行,然后链接<li style="list-style-type: none;"><a href="main.html"><div id="sortmain" class="catagories">main</div></a></li> main.html 是它在#container 中显示的实际文件。它可以工作,我可以来回走,但是它看起来很毛刺,我想知道如何实现加载gif。
    • 还因为 main.html 是它正在调用的实际文件,我无法刷新页面,否则它只会显示该文件输出。我该如何解决这个问题?
    猜你喜欢
    • 1970-01-01
    • 2013-09-04
    • 2012-02-08
    • 2013-01-21
    • 1970-01-01
    • 2013-03-22
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多