whychdw
2025-06-06 d0f98ad8e1047e3161a458399ad3005404ed87b8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
 * 全局被动事件监听器封装 
 * @param {Element} element 目标元素 
 * @param {string} eventType 事件类型(如 'wheel'、'mousewheel')
 * @param {Function} handler 事件处理函数 
 */
export default function addPassiveEventListener(element, eventType, handler) {
  // 检测浏览器是否支持 passive 选项 
  let supportsPassive = false;
  try {
    const opts = Object.defineProperty({},  'passive', {
      get() {
        supportsPassive = true;
      }
    });
    window.addEventListener('test',  null, opts);
  } catch (e) {}
 
  // 添加事件监听器,强制使用 passive: true 
  element.addEventListener( 
    eventType,
    handler,
    supportsPassive ? { passive: true } : false 
  );
}