zoukankan      html  css  js  c++  java
  • history新增方法

    history对象包含用户访问过的URL,属于window对象的一部分,传统的使用中,它拥有length属性(浏览器历史列表URL数目)

    及back()、forward()、go()方法。

    而新的H5则赋予了其更多的新特性:

    往返缓存

    默认情况下,浏览器会缓存当前会话页面,这样当下一个页面点击后退按钮,或前一个页面点击前进按钮,浏览器便会从缓存中提取并加载此页面,这个特性被称为“往返缓存”。

    备注: 此缓存会保留页面数据、DOM和js状态,实际上是将整个页面完好无缺地保留

    ------------沉默分割线-----------------------------------------------------------------------------------------------------------------------

    pushState(state, title, url) 

    往历史记录栈中添加记录

    支持度: IE10+

    state: 一个js对象,主要用于在popstate事件中作为参数被获取

    title: 新页面的标题,部分浏览器(比如firefox)忽略此参数,因此一般为null

    url: 新历史记录的地址,可为页面地址也可为一个锚点值,新url必须与当前url处于同一个域,否则将抛出异常,此参数若没有特别标注,会被设为当前文档url

    实例:

    假定当前网址是example.com/1.html,使用pushState方法在浏览记录(history对象)中添加一个新记录

    var stateObj = { foo: 'bar' };
    history.pushState(stateObj, 'page 2', '2.html');

    浏览器地址栏将立即变成example.com/2.html,但并不会跳转到2.html,甚至不会检查2.html是否存在,也不会再popstate事件中获取,因为:这个方法仅仅是添加了一条最新记录,不会触发页面刷新

    备注:

    1.将url设为锚点值时不会触发hashchange

    2.如果设置不同域名地址,会报错,这样做的目的是:防止用户以为它们是同一个网站,若没有此限制,将很容易进行XSS、CSRF等攻击方式

    ------------华丽分割线--------------------------------------------------------------------------------------------------------------------------

    replaceState(state, title, url)

    支持度: IE10+

    参数与pushState一致,但其功能是改变当前的历史记录而不是添加新的记录。

    同样不会触发popstate

    ------------璀璨分割线--------------------------------------------------------------------------------------------------------------------------

    history.state

    支持度: IE10+

    返回当前历史记录的state

    --------------曼妙分割线---------------------------------------------------------------------------------------------------------------------

    popstate事件

    支持度: IE10+

    语法: window.onpopstate= function(event){

      console.log(event.state) //当前历史记录的state对象

    }//注意大小写

    触发条件: 点击前进后退按钮、调用back()、forward()、go()

    个人思考: 对于pushState、replaceState无法触发它,可以从语义上理解,pop有弹出、提取出的意味,是从历史记录栈中提取出来,而pushState、replaceState分别是压入栈和改变元素,自然不会触发。

  • 相关阅读:
    面向对象反射、元类
    面向对象高级
    面向对象之封装
    抽象、继承、组合
    面向对象基础
    常用模块及其使用(二)
    常用模块及其使用
    模块及模块的使用
    drf框架之视图类、视图家族和路由组件
    drf框架群查接口的筛选组件之搜索过滤组件、排序过滤组件、分页器组件、django_filter插件
  • 原文地址:https://www.cnblogs.com/yanze/p/7641774.html
Copyright © 2011-2022 走看看