zoukankan      html  css  js  c++  java
  • 你不知道的passive event listener-让移动端滑动体验起飞(优化页面滑动)

    原文链接:https://blog.csdn.net/fesfsefgs/article/details/107852438

    主旨:

    1. addEventListener第三个参数除了可以是一个boolean类型外,还可以是一个options配置对象!!
    addEventListener(type, listener, useCapture);
    addEventListener(type, listener, options);
    /*
    {
    	capture: Boolean, // 表示 listener 会在该类型的事件捕获阶段传播到该 EventTarget 时触发
    
    	once: Boolean, // 表示 listener 在添加之后最多只调用一次。如果是 true, listener 会在其被调用之后自动移除。
    	
    	passive: Boolean, // 设置为true时,表示`listener`永远不会调用`preventDefault()`。如果`listener`仍然调用了这个函数,客户端将会忽略它并抛出一个控制台警告
    }
    */
    
    1. 添加passive参数后,touchmove事件不会阻塞页面的滚动(同样适用于鼠标的滚轮事件)
      你可以这么理解: 当你触摸滑动页面时,页面应该跟随手指一起滚动。而此时你绑定了一个 touchmove 事件,你的事件大概执行 200 毫秒。这时浏览器就犯迷糊了:如果你在事件绑定函数中调用了 preventDefault,那么页面就不应该滚动,如果你没有调用 preventDefault,页面就需要滚动。但是你到底调用了还是没有调用,浏览器不知道。只能先执行你的函数,等 200 毫秒后,绑定事件执行完了,浏览器才知道,“哦,原来你没有阻止默认行为,好的,我马上滚”。此时,页面开始滚。
      所以设置{ passive: true }的意义是
      告诉浏览器立马滚动,不用等200毫秒后确认了,我根本就没有preventDefault,此时你滚动起来再也没有延迟感了,舒服了
  • 相关阅读:
    python九九乘法表
    js的规范写法ES5(自己以后按照这样写)
    git使用和理解之一(不含分支)
    Javascript中对象的Obeject.defineProperty()方法-------------(ES5/个人理解)
    escape()、encodeURI()、encodeURIComponent()区别详解--zt
    webpack学习(一)
    width:100%以什么为基准的测试
    git status中文文件名编码问题解决
    系统构建基础
    jdk+Tomcat环境搭建
  • 原文地址:https://www.cnblogs.com/codeth/p/14082185.html
Copyright © 2011-2022 走看看