函数节流/函数防抖/requestAnimationFrame

函数节流

函数节流:每个固定的时候之内,函数只执行一次

  //代码实现
  window.onload = function () {
    let flag = false;
    document.getElementsByTagName('body')[0].onscroll = function () {
      if(flag){
        return;
      }
      flag = true;
      setInterval(function () {
        console.log('111')
        flag = false;
      },2000)
    }
  }

函数防抖

函数延迟执行:函数执行结束后,2秒后打印一次

//代码实现
window.onload = function () {
  let timer = false;
  document.getElementsByTagName('body')[0].onscroll = function () {
    if(timer){
      clearInterval(timer);
    }
    timer = setInterval(function () {
      console.log('2222')
    },2000)
  }
}

window.requestAnimationFrame()

window.requestAnimationFrame()

  • window.requestAnimationFrame() 方法告诉浏览器您希望执行动画并请求浏览器在下一次重绘之前调用指定的函数来更新动画 该方法使用一个回调函数作为参数,这个回调函数会在浏览器重绘之前调用。

  • window.cancelAnimationFrame(requestID) 取消一个先前通过调用window.requestAnimationFrame()方法添加到计划中的动画帧请求. requestID是先前调用window.requestAnimationFrame()方法时返回的ID.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    * {
      margin:0;
      padding:0;
    }

    #test {
      width: 200px;
      height: 200px;
      background: green;
      position: absolute;
      left: 0;
      right: 0;
      top: 0;
      bottom: 0;
      margin:auto;
    }
  </style>
</head>
<body>
<div id="test"></div>
<script type="text/javascript">

window.onload = function () {
  let i = 0;
  window.requestAnimationFrame(fn);
  function fn() {
    i+=10;
    document.getElementById('test').style.transform = 'translateX('+i+'px)';
    window.requestAnimationFrame(fn);
  }
}

</script>
</body>
</html>

storage

storage事件:

  • Storage 对象发生变化时(即创建/更新/删除数据项时,Storage.clear() 方法至多触发一次该事件)会触发
  • 在同一个页面内发生的改变不会起作用
  • 在相同域名下的其他页面发生的改变才会起作用。(修改的页面不会触发事件,与它共享的页面会触发事件)

方法

 key        :  修改或删除的key值,如果调用clear(),为null
 newValue    :  新设置的值,如果调用clear(),为null
 oldValue    :  调用改变前的value值,如果调用clear(),为null
 url         :  触发该脚本变化的文档的url
 storageArea :  当前的storage对象

localStorage和sessionStorage

  • 都是指的本地缓存
  • sessionStorage:会话缓存。生命周期:从打开浏览器到关闭浏览器
  • localStorage:永久的,除非本人删除 5M
  • cookie:4kb
  • 方法:
    • 添加:setItem(key,value)
    • 获取:getItem(key)
    • 删除:removeItem(key)
    • 清除:clear();
    • 注意:只存储JSON数据

数据同步

文件1.html

  window.onload = function () {
document.getElementById('test').onblur = function () {
  let value = this.value;
  localStorage.setItem('VALUE',value);
}
}

文件2.html

  window.addEventListener('storage',function (event) {
console.log(event.newValue);
})

注意:修改文件1中的缓存内容,文件二的控制台中会打印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值