关于html5 history接口的一个小实例


关于html5 history接口的一个小实例

场景:当你在app里浏览图片时,点击图片,改图片会放大,点击手机的返回键的时候会自动关闭。如果用网页来实现,应该怎么实现!

有三种种实现方法

  • 1、使用最常规的方法实现,通过页面跳转,这种效果最烂,用户体验可以说渣渣
  • 2、通过锚点中的#号去实现(没去试)
  • 3、通过h5的history接口实现

注:可能有部分浏览器兼容问题,所以我使用的是一个第三方的库文件

history 主要接口

  • 历史变动触发方法 History.Adapter.bind(window, 'statechange', ()=> {})
  • 历史压栈 History.pushState
  • 历史替换 History.replaceState
  • 历史返回 History.back()
  • 历史跳转 History.go(2)

例子

  • 关于history这个接口, 这要是人工压入的历史记录都会触发一个叫statechange的事件。
  • 举个例子: 就像上面那张图片一样, 当你点击这张图片的时候,我手动压入历史记录操作,此时就触发触发statechange事件; 当你点击返回上一页的时候,也会触发这个statechange事件; 返回上一页后,点击前进也是一样会触发statechange事件; 基本可以总结为,只要跟我们认为压入的记录有关的都会触发这个statechange事件,并且不会刷新页面。