码迷,mamicode.com
首页 > Web开发 > 详细

关于history.js的使用

时间:2015-10-16 23:07:54      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:

     项目地址: https://github.com/browserstate/history.js

     做wap端的时候,有些时候一个页面里有很多小页面或者标签,希望刷新浏览器或者按返回键的时候,能够被当成一个页面去处理。所以就去找html5是否提供这样的接口。

最后发现确实有这个接口,但兼容性 不好。

      后来发现这个插件 history.js,可以兼容各大浏览器。 html4是使用Hash值进行兼容。所以在获取url 问好后面的值时,需要判断是否是兼容模式。

      js中如果是hash兼容模式 window.location.hash 这个值是不为空,如果不是hash兼容模式 window.location.hash值为空。

history.js 提供的demo也很简单

(function(window,undefined){
  // Bind to StateChange Event
  History.Adapter.bind(window,‘statechange‘,function(){ // Note: We are using statechange instead of popstate
    var State = History.getState(); // Note: We are using History.getState() instead of event.state
  });
  // Change our States
  History.pushState({state:1}, "State 1", "?state=1"); // logs {state:1}, "State 1", "?state=1"
  History.pushState({state:2}, "State 2", "?state=2"); // logs {state:2}, "State 2", "?state=2"
  History.replaceState({state:3}, "State 3", "?state=3"); // logs {state:3}, "State 3", "?state=3"
  History.pushState(null, null, "?state=4"); // logs {}, ‘‘, "?state=4"
  History.back(); // logs {state:3}, "State 3", "?state=3"
  History.back(); // logs {state:1}, "State 1", "?state=1"
  History.back(); // logs {}, "Home Page", "?"
  History.go(2); // logs {state:3}, "State 3", "?state=3"
})(window);

  初次看,压根没看懂是如何使用的。。。。

      经过实践,特来解释下上边的代码

//History主要改变的问号后面的键值。。
//这个是向浏览历史压入一条新纪录
//记录为当前url且问号后面的值为 state=1,
//将一个{state:1}对象压入该链接中,供下面的历史事件触发时调用,
//State 1 为其新的标题 (即head title);
//这个动作会触发下面statechange 事件
History.pushState({state:1}, "State 1", "?state=1");

//改变当前url问好后面的值
//不触发statechange事件
//不增加历史记录 History.replaceState({state:3}, "State 3", "?state=3"); //前提是通过History.pushState 增加的历史记录。 // 向前跳或者向后跳都会出发这个事件,刷新不会 //State对象中的data就是 上面存入的对象 {state:3} History.Adapter.bind(window,‘statechange‘,function(){ var State = History.getState(); instead of event.state });

所以无论是将一条url压入历史中、返回上一页、向前跳一页等等(不包括刷新和原来的历史记录),都会触发statechange事件。 剩下的自己发挥。

原先我不知道压入的时候会触发,后面调试的时候才发现,也会。 这是个坑。。。

 

关于history.js的使用

标签:

原文地址:http://www.cnblogs.com/songbyjson/p/4886615.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!