首页 > 其他分享 >Added non-passive event listener to a scroll-blocking 'mousewheel' event. Consider marking

Added non-passive event listener to a scroll-blocking 'mousewheel' event. Consider marking

时间:2023-05-11 18:02:09浏览次数:39  
标签:listener 滚动 element passive 监听器 handleMouseWheel event

这个警告意味着在事件监听器中,添加了一个阻止页面滚动的 `mousewheel` 事件,但是该事件监听器并没有标记为被动事件监听器(passive event listener)。这可能会导致页面滚动变得不流畅,特别是在移动设备上。

为了解决这个问题,您需要将事件监听器标记为被动事件监听器。具体实现方法如下:

1. 使用 `addEventListener` 添加事件监听器时,将第三个参数设置为 `{passive: true}`。

例如:

```
element.addEventListener('mousewheel', this.handleMouseWheel, {passive: true});
```

2. 如果使用 jQuery 等框架或库来添加事件监听器,则需要在选项对象中添加 `passive: true` 属性。

例如:

```
$(element).on('mousewheel', this.handleMouseWheel, {passive: true});
```

如果您无法修改事件监听器,可以尽量减少阻止页面滚动的情况以降低影响。您也可以在 Chrome DevTools 中打开 Performance 标签,然后进行录制和分析以查看页面滚动的性能。

-----------------------------------------------------------------

`this.handleMouseWheel` 是一个函数,它是用来处理 `mousewheel` 事件的。您可以根据自己的需要编写适当的 `handleMouseWheel` 函数。

下面是一个示例 `handleMouseWheel` 函数,它可以让页面上的元素向上或向下滚动。具体来说,当鼠标滚轮向上滚动时,该函数会使元素向上滚动一定距离;当鼠标滚轮向下滚动时,该函数会向下滚动一定距离。

```
handleMouseWheel(event) {
// 阻止默认的鼠标滚轮事件
event.preventDefault();

// 获取滚轮变化量
const delta = Math.max(-1, Math.min(1, (event.wheelDelta || -event.detail)));

// 获取要滚动的元素和滚动距离
const element = document.getElementById('element-to-scroll');
const scrollDistance = 100; // 你需要滚动的距离

// 计算新的滚动位置
const scrollTop = element.scrollTop;
const newScrollTop = scrollTop - delta * scrollDistance;

// 滚动元素到新的位置
element.scrollTop = newScrollTop;
}
```

请注意,上述示例需要您先在 HTML 页面中定义一个具有 ID `element-to-scroll` 的元素。您需要将示例中的 `scrollDistance` 变量设置为您想要的滚动距离。

当然,具体的处理函数的实现应该根据具体的业务需求进行编写。

标签:listener,滚动,element,passive,监听器,handleMouseWheel,event
From: https://www.cnblogs.com/gaosj20210301/p/17391817.html

相关文章

  • oracle 开启tnsping trace、sqlnet trace 、event10257
    在sqlnet.ora文件中加入以下参数:TNSPING.TRACE_LEVEL=SUPPORTTNSPING.TRACE_DIRECTORY=d:\oracle\trace“tnsping”工具的预期用途仅仅是测试OracleNet别名中指定的数据库侦听器是up还是down。“tnsping”工具不打算用作OracleNet性能测量工具B.Sql*nettraceSE......
  • Event Tables for Efficient Experience Replay
    Abstract事件表分层抽样(SSET),它将ER缓冲区划分为事件表,每个事件表捕获最优行为的重要子序列。我们证明了一种优于传统单片缓冲方法的理论优势,并将SSET与现有的优先采样策略相结合,以进一步提高学习速度和稳定性。在具有挑战性的MiniGrid域、基准RL环境和高保真赛车模拟器中的实......
  • Three_Phase_Passive_Inverter_withDroop:基于MATLAB/Simulink的三相无源逆变器仿真模
    Three_Phase_Passive_Inverter_withDroop:基于MATLAB/Simulink的三相无源逆变器仿真模型,逆变器控制采用下垂控制。仿真条件:MATLAB/SimulinkR2015b,如需转成低版本格式请提前告知ID:3835649231877702......
  • C# HttpListener 和 HttpServer区别
    HttpListener和HttpServer都是C#中用于创建HTTP服务器的类库,它们的作用都是监听HTTP请求,并向客户端发送HTTP响应。它们的主要区别在于实现方式和使用场景。HttpListener是.NETFramework中的一个类,它提供了一种基于事件的异步API,可以用于创建一个轻量级的HTTP服......
  • Listener监听器,实现一个显示在线用户人数
    Listener监听器,实现一个显示在线用户人数每博一文案关于后半身,脾气越温,福报越深。师傅说:惜命最好的方式不是养生,而是管好自己的情绪。坏毛病都是惯出来的,但好脾气都是磨出来的,与人生气,伤的是和气,与自己生气,伤的是身体。佛说:人有五毒心,贪嗔痴慢疑,其中一时的嗔念起,百万叶障深,......
  • spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)
    关键字:spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)应用场景:很多时候我们想要在某个类加载完毕时干某件事情,但是使用了spring管理对象,我们这个类引用了其他类(可能是更复杂的关联),所以当我们去使用这个类做事情时发现包空指针错误,这是因为我们......
  • Uncaught TypeError: f.__fbeventsModules[a] is not a function at f.__fbeventsM
    UncaughtTypeError:f.__fbeventsModules[a]isnotafunctionatf.__fbeventsModules.f.getFbeventsModules怎么了这个错误通常是因为代码中使用了Facebook的跟踪代码,但是在加载该代码之前,代码中尝试访问跟踪模块。这个错误有几种可能的原因:Facebook跟踪代码没有正......
  • [Event] Linux con Japan 2015
    日本每年都举办一次LinuxCon,下面是今年的Event及对应的ppthttp://events.linuxfoundation.jp/events/linuxcon-japan粗粗看了一下,竟然还有这么一个主题。HowChinainvolvedinOpenSourceMovement不过幻灯片让人大跌眼镜,讲演怎么样姑且不论,这内容也太少了。http://eve......
  • 【SpringBoot】【二】 SpringApplicationRunListeners 监听器执行过程详解
    1 前言我们看到SpringBoot启动的时候,会在每个时机执行监听器,这节我们就来看看,加载监听器的过程我们就不说了哈,上节说过了哈,本节我们主要看:(1)SpringApplicationRunListeners的创建过程(2)监听器的执行时机有哪些(3)监听器的执行过程三个方面来看哈。2 使用在看之前,我们先......
  • mysql event事件
    检查事件调度程序SHOWVARIABLESLIKE'event_scheduler';#如果返回值为ON,则表示事件调度程序已启用。如果返回值为OFF,则需要使用以下命令启用SETGLOBALevent_scheduler=ON;查询事件SHOWEVENTS;查看事件定义SHOWCREATEEVENTevent_name;创建事件CRE......