Html History.js的实现
我正在尝试为我的ajax站点实现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(); }; 请参阅以下问题: 更多关于
<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);
});