我试图为我的ajax网站实现History.js,以便我可以使用前进和后退按钮甚至书签.然而,@
https://github.com/browserstate/History.js/的例子让我有点困惑,如何实现它.有没有人有一个简单的教程或示例如何使用这个.我们可以用来启动示例的示例是导航链接,例如
<script type="text/javascript"> window.onload = function() { function1(); };
<ul> <li><a href="javascript:function1()">Function1</a></li> <li><a href="javascript:function2('param','param')"</a></li> </ul>
解决方法
我完全不了解如何使用History.js.这里是他们的维基的一些代码,我的意见解释:
1.获取对history.js对象的引用
获取引用History.js对象引用的window.History(Capitol’H’).
var History = window.History;
要检查是否启用HTML5历史记录,请检查历史记录.如果没有,那么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.这将替代历史堆栈中的最后一个状态,如上所示.
History.replaceState({data:"any kind of data object"},"?urlforthestate=1");
pushState和replaceState之间的区别在于pushState将向历史列表添加一个状态,replaceState将覆盖最后一个状态.
注意:pushState和replaceState序列化数据对象,所以在那里使用最少的数据.
4.如果要为用户添加额外的ui以能够浏览历史记录,请使用导航命令
使用后退,通过代码浏览历史记录.
History.back(); History.go(2);
附加:使用“a”标签与历史
要使用具有历史记录的“a”标签,您需要拦截点击事件并阻止浏览器使用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); });
我希望这有帮助.