JS 客户端API 之 history pushState/ replaceState

  • History

    使用back(), forward(), Go() 可以在用户历史记录中前进和后退。

  • Ajax + 添加和修改history实体(pushState / raplaceState)

HTML5 引入了 history.pushState() 和 history.replaceState() 这两个方法,他们允许添加和修改 history实体。

1. history.pushState(state, title, url)

 pushState 是人工插入历史记录和修改地址栏,此时地址栏虽然修改,但并不触发网页跳转,换句话说就是给  
你看的而已,第一个参数是一个对象,你可以放入需要的参数,第二个标题名称,第三个就是url.这是地址栏里显
示的东西。 url 不能跨域。
2. history.replaceState(state,title,url)
同history.pushState,只不过使用新的state 和URL替换当前的。

 ####3. window.onpopstate

用户点击浏览器历史前进后退按钮,并且页面无刷的时候(由于使用pushState修改了history)会触发
popstate事件,事件发生时浏览器会从history中取出URL和对应的state对象替换当前的URL和history.state。
  • 例子
var App={
    Init:function(){
        App.State(title,url);
        App.StateListen();
    },
    State:function(title,url){//无刷新改变URL
        if(window.history.pushState){
            window.history.pushState({title:title,url:url},title,url);
        }else{
            location.href=url;
        }
        document.title=title;
    },
    StateListen:function(){//监听地址
        var url=location.href.toString().split("/");
 
        window.addEventListener('popstate', function(e){
          if (history.state){
            var url=e.state.url;
            //根据url值进行相应操作
          }
        },false);
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 新增的API 1.语义: 能够让你更恰当地描述你的内容是什么。 2.连通性: 能够让你和服务器之间通过创新的新技术...
    红鲤鱼不理绿鲤鱼阅读 11,803评论 0 5
  • 本博客转自:「作者:若愚链接:https://zhuanlan.zhihu.com/p/22361337来源:知乎...
    韩宝亿阅读 7,760评论 0 3
  • 以下是常用的代码收集,学习用。转自豪情博客园 1. PC - js 返回指定范围的随机数(m-n之间)的公式 re...
    自由加咖啡阅读 4,657评论 0 1
  • 1 实时数据总线服务-TTTimeTunnel(TT)在阿里巴巴集团内部是一个有着超过6年历史的实时数 据总线服务...
    曹振华阅读 5,485评论 0 1
  • 喜滋滋的日子“嗖”地过得飞快,马上快要过圣诞节了。 许丽丽早就伸长脖子盼望着圣诞,她的“东哥哥”要从北京过来看她了...
    小树洞君阅读 2,256评论 0 1

友情链接更多精彩内容