首页 > 其他分享 >[Violation] Added non-passive event listener to a scroll-blocking <某些> 事件. Consider marking ev

[Violation] Added non-passive event listener to a scroll-blocking <某些> 事件. Consider marking ev

时间:2024-04-23 13:11:43浏览次数:31  
标签:listener touchstart preventDefault passive true event

今天在网页控制台看到了这个警告

[Violation] Added non-passive event listener to a scroll-blocking <某些> 事件. Consider marking event handler as 'passive' to make the page more responsive. See

然后我发现是一款浏览器叫“沉浸式翻译 - 网页翻译插件 | PDF翻译 | 免费”翻译插件引起的,于是我查找了一下资料。首先这句报错的意思是,为了不影响滑动页面时的堵塞,请设置
addEventListener(type, listener,{ passive:true});

mdn文档是这样介绍passive的

  • passive 可选
    一个布尔值,设置为 true 时,表示 listener 永远不会调用 preventDefault()。如果 listener 仍然调用了这个函数,客户端将会忽略它并抛出一个控制台警告。查看使用 passive 改善滚屏性能以了解更多。

可见passive主要用来屏蔽preventDefault(),如果代码中有还会触发一个警告,可能是preventDefault,妨碍了页面滚动, 页面滚动依赖的事件有touchstart和touchmove, 这下真相大白了。

是因为touchstarttouchmove的默认行为被阻止,如果某个div上这样做了,
用户手指在上面开始滚动页面就会失败,所以从chrome 51开始对开发者建议,使用passive屏蔽touchstart和touchmove事件的preventDefault()

  const a = document.querySelector('.div')

    a.addEventListener("touchstart",(e)=>{
     
    },{
        passive:true
    })

    a.addEventListener("touchmove",(e)=>{
  
    },{
        passive:true
    })

加了passive:true后, 还有用e.preventDefault(), 控制台就会报一个错误, 这时就知道加了不该加的语句,去代码中把 e.preventDefault()删除即可

标签:listener,touchstart,preventDefault,passive,true,event
From: https://www.cnblogs.com/adamr/p/18152650

相关文章

  • 为什么有很多出名开源的C/C++方面的高性能网络库,比如libevent,boost-asio,有些企业还要
    为什么有很多出名开源的C/C++方面的高性能网络库,比如libevent,boost-asio,有些企业还要自己写?    我个人很倾向用著名的开源软件来完成功能需求,但是发现在实际开展中很多人会反对开源,而要求自己实现一套,我不知道是我考虑太少,还是他们太武断。 因为KPI的原因更多......
  • ts中的dom元素和event事件类型声明
    1,HTMLElement和Element<divid="divClick"></div>constdocu=document.getElementById('divClick');constdocu1=document.querySelector('#divClick');把鼠标分别放在docu和docu1上:HTMLElementHTMLElement......
  • delphi TApplicationEvents控件,响应程序级快捷键
    在窗体中插入TApplicationEvents控件,然后设置它的onMessage事件即可 procedureTForm1.ApplicationEventsMessage(varMsg:tagMSG;varHandled:Boolean);varAktywnaForma:TForm;begin//检查是否按下CTRL键并同时按下F7键if(Msg.wParam=VK_F7)and((......
  • gevent实现协程爬虫
    这里只供基础的爬虫需求,协程是什么和gevent进阶用法就不赘述了下载pipinstallgevent基本流程1.打补丁打补丁的意思是使用gevent的monkey类将python的一些标准库函数的阻塞调用都改成协作式的,这部分不懂可以不用管,在你的代码上固定下面两行就好。fromgeventimportmonke......
  • iOS中使用text/event-stream数据流实现后端SSE数据推送
    最近在做通过http请求实现后端一条一条一条消息推送,达到gpt那种搜索的展示的效果客户端这边设置很简单,只需要设置请求头[request addValue:@"text/event-stream" forHTTPHeaderField:@"Accept"];项目网络库用的AFN,经调研发现AFN不支持这个请求,最后选择了系统的NSURLSession......
  • 简单写一个eventbus
    前言闲暇之余,简单写一个eventbus。正文什么是eventbus?eventbus是一个开源的发布订阅模式的框架,用于简化程序间不同组件的通信。它允许不同组件间松耦合通信,组件之间不通过直接引用的方式,而是事件的方式进行消息传递。下面进行代码演示:首先是发布订阅,那么就应该有发布方法......
  • 【Linux系统编程】libevent库实现简易tcp服务器
    libevent库实现简易tcp服务器流程分析创建socket,设置端口复用,绑定四元组,开始监听。初始化event_base结构体。编写监听事件的回调函数和客户端读事件的回调函数。初始化tcp监听事件,并加入event_base中。开始event事件处理循环。释放所有事件占用资源。释放event_base占用......
  • 【Linux系统编程】libevent库事件驱动
    libevent库事件驱动libevent库使用创建并初始化event_base结构体。创建并初始化event结构体,并设置文件描述符、监听事件、回调函数、回调函数参数。将event添加到event_base中。开始事件处理循环,监听事件是否发生,并在满足条件时自动调用回调函数。事件处理完成后,释放event......
  • function ALV 获取OO ALV event ID
    SAPABAPALV(LVC)的一个自定义事件(F4帮助事件,回车ENTER按钮事件)的一个实例https://blog.csdn.net/zhongguomao/article/details/51775112 1.定义和注册事件接受器类*----------------------------------------------------------------------**CLASSLCL_EVENT_RECE......
  • html 元素的 onEvent 与 addEventListener
    对于html元素的onEvent,我们想要给其添加functionhandler(){},有时候会弄不清楚到底是添加<divonEvent="handler">还是添加<divonEvent="handler()">下面两段等价的代码说明了问题<inputtype="file"onchange="showFile(this)"><script>......