使用 default-passive-events 解决滚动背景的问题

由于 Chrome 想提高浏览器动画渲染帧数,要修改 eventListener 相关接口,出现了遮罩层无法屏蔽滚动动作的情况。

实现

安装依赖

npm install --save default-passive-events

code

require('default-passive-events'); 

preventBackScroll = (e) => { 
  e.preventDefault(); 
  e.stopPropagation(); 
} 

renderModal = (e) => { 
  // 阻止滚动 
  document.addEventListener('touchmove', this.preventBackScroll, { passive: false, capture: true }); 
  // 遮罩层实现代码省略 
  return <div onClose={(e) => { 
    // 关闭遮罩层时放开 
    document.removeEventListener('touchmove', this.preventBackScroll, { passive: false, capture: true }); 
  }}></div> 
} 
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容