Html History.js的实现

Html History.js的实现,html,ajax,history.js,Html,Ajax,History.js,我正在尝试为我的ajax站点实现History.js,这样我就可以使用前进和后退按钮,甚至书签。然而,示例@让我对如何实现它有点困惑。有没有人有一个简单的教程或例子来说明如何使用这个。我们可以使用一个导航链接来开始这个示例,例如 <script type="text/javascript"> window.onload = function() { function1(); }; window.onload=函数() { 功能1(); }; 请参阅以下问题: 更多关于

我正在尝试为我的ajax站点实现History.js,这样我就可以使用前进和后退按钮,甚至书签。然而,示例@让我对如何实现它有点困惑。有没有人有一个简单的教程或例子来说明如何使用这个。我们可以使用一个导航链接来开始这个示例,例如

<script type="text/javascript">
window.onload = function() 
{
function1();
};

window.onload=函数()
{
功能1();
};

  • 请参阅以下问题:

    更多关于


    我很难完全理解如何使用History.js。以下是他们的wiki中的一些代码和我的注释,以供解释:

    1。获取对history.js对象的引用

    获取对History.js对象引用window.History(Capitol'H')的引用

    要检查HTML5历史记录是否已启用,请检查history.enabled。如果不是,History.js仍将使用哈希标记工作

    History.enabled
    
    2。收听历史记录更改并从此处更新您的视图

    要侦听历史状态更改,请绑定到适配器对象的statechange事件

    History.Adapter.bind(window,'statechange',function(){ 
        var State = History.getState(); 
        History.log(State.data, State.title, State.url);
    });
    
    3。使用推送或替换操作历史状态

    要将状态添加到历史记录中,请调用pushState。这将向历史堆栈的末尾添加一个状态,该状态将触发如上所示的“statechange”事件

    History.pushState({data:"any kind of data object"}, "State Title", "?urlforthestate=1"); 
    
    要将状态替换为历史记录,请调用replaceState。这将替换历史堆栈中的最后一个状态,该状态将触发如上所示的“statechange”事件

    History.replaceState({data:"any kind of data object"}, "State Title", "?urlforthestate=1"); 
    
    pushState和replaceState之间的区别在于pushState将向历史记录列表添加一个状态,replaceState将覆盖最后一个状态

    注意:pushState和replaceState序列化数据对象,因此在那里使用最少的数据

    4。如果要为用户添加额外的用户界面以便能够浏览历史记录,请使用导航命令

    使用back and go可通过代码浏览历史记录

    History.back();
    History.go(2);
    
    附加:使用带有历史记录的“a”标记

    要在历史记录中使用“a”标记,您需要截取click事件,并使用event.preventDefault()方法阻止浏览器导航

    例如:

    <a href="dogs/cats" title="Dogs and cats">Dogs and Cats</a>
    
    $('a')​.click(function(e){
        e.preventDefault();
        var url = $(this).attr('href');
        var title = $(this).attr('title');
        History.pushState({data:title}, title, url);
    })​;
    
    
    $('a')​.单击(功能(e){
    e、 预防默认值();
    var url=$(this.attr('href');
    var title=$(this.attr('title');
    pushState({data:title},title,url);
    })​;
    

    我希望这会有所帮助。

    ok教程在jquery中帮助了很多关于它的一个问题是$(“#”)。load()相当于ajax请求,例如onlick='javascript:function1();'?作为一个例子,我也在努力解决这个问题。我得到了上面显示的内容,但是与以前使用#方法的history.js相比,缺少了很多内容。我能够通过绑定到可点击的项目(如导航菜单中的锚定)来获得以前基于#的示例。然后,这将基于href调用一个处理程序,在该处理程序中可以进行ajax调用。我看不出每个url的点击事件是如何绑定到这里的。我所做的一切都不会截获url点击事件。你需要做的是截获这些HREF上的点击并从那里开始。例子:​$(‘a’)​.单击(函数(e){e.preventDefault();})​. 在e.preventDefault()之后,您可以获取href属性的值并使用它来推送历史状态,而无需离开页面。谢谢,我做了类似的操作并在上面添加了它,但我不确定这是否是正确的方法。另外,我不明白为什么需要e.preventDefault()。看来返回错误;使用和不使用哈希标记的区别在于,当href为哈希时,浏览器不会自然刷新。如果您仅使用哈希样式,则可以让浏览器为您更改url。我将如何在PushState中加载url的内容查看可能的答案和相关问题:
    History.back();
    History.go(2);
    
    <a href="dogs/cats" title="Dogs and cats">Dogs and Cats</a>
    
    $('a')​.click(function(e){
        e.preventDefault();
        var url = $(this).attr('href');
        var title = $(this).attr('title');
        History.pushState({data:title}, title, url);
    })​;