首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >History.js的实现

History.js的实现
EN

Stack Overflow用户
提问于 2011-10-15 19:44:49
回答 2查看 17K关注 0票数 15

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

代码语言:javascript
运行
复制
<script type="text/javascript">
window.onload = function() 
{
function1();
};

代码语言:javascript
运行
复制
<ul>
<li><a href="javascript:function1()">Function1</a></li>
<li><a href="javascript:function2('param', 'param')"</a></li>
</ul>
EN

回答 2

Stack Overflow用户

发布于 2012-05-31 00:52:05

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

1.获取对history.js object的引用

获取对History.js对象引用window.History (大写'H')的引用。

代码语言:javascript
运行
复制
var History = window.History;

要检查是否启用了HTML5历史记录,请检查History.enabled。如果不是这样,History.js仍将使用散列标签工作。

代码语言:javascript
运行
复制
History.enabled

2.监听历史记录更改并从此处更新视图

要侦听历史记录状态更改,请绑定到Adapter对象的statechange事件。

代码语言:javascript
运行
复制
History.Adapter.bind(window,'statechange',function(){ 
    var State = History.getState(); 
    History.log(State.data, State.title, State.url);
});

3.使用推送或替换操作历史记录状态

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

代码语言:javascript
运行
复制
History.pushState({data:"any kind of data object"}, "State Title", "?urlforthestate=1"); 

要将状态替换为历史记录,请调用replaceState。这将替换历史堆栈中的最后一个状态,它将触发如上所示的“statechange”事件。

代码语言:javascript
运行
复制
History.replaceState({data:"any kind of data object"}, "State Title", "?urlforthestate=1"); 

pushState和replaceState的不同之处在于,pushState会将一个状态添加到历史列表中,而replaceState会覆盖最后一个状态。

注意: pushState和replaceState序列化了数据对象,所以只使用最少的数据。

4.如果要添加其他ui以便用户能够导航历史记录,请使用导航命令

使用back和go通过代码导航历史记录。

代码语言:javascript
运行
复制
History.back();
History.go(2);

历史附加:在中使用"a“标记

要使用带有历史记录的"a“标记,您需要拦截单击事件,并使用event.preventDefault()方法阻止浏览器导航。

示例:

代码语言:javascript
运行
复制
<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);
})​;

我希望这能帮到你。

票数 36
EN

Stack Overflow用户

发布于 2011-10-15 19:59:14

请参考此问题:Implementing "Back button" on jquery ajax calls

有关RSH的更多信息

How to implement RSH (Really Simple History) for Ajax History Back Button

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

https://stackoverflow.com/questions/7777626

复制
相关文章

相似问题

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