addEventListener与removeEventListener 精进记录

这两天开发移动端H5因为ios 自带的滑动属性导致页面里滑动时ios系统下 在边界滑动动画未结束前 滑动页面导致页面无法滑动,需等待ios边界动画结束后才能滑动。
由于页面是微前端 出问题的和真正能简单控制的层面在我项目外面了
网上一顿找方法 没什么吊用 出问题的不在我这里

 overflow: hidden;
overscroll-behavior: none;
-webkit-overflow-scrolling: auto;
overflow-scrolling: auto;   

于是就找到监听touchmove的方法

addEventListener的时候e.preventDefault();
removeEventListener的时候也这么弄一下不就行了;
结果您猜怎么着 对 就是不行

之前从来没有仔细的研究过这里

这是我之前的写法

const checkedTarget = (e) => {
  if (!isTarget) {
    e.preventDefault();
  }
}

document.addEventListener('touchmove', (e) => {
      checkedTarget(e)
    }, { passive: false });

// 触摸移动事件
document.removeEventListener('touchmove', (e) => {
      checkedTarget(e)
    }, { passive: false });


实际是错的
网上一顿找 智障ai也问了一堆 没d用
最后偶然间看到网上的大佬说了这么一句话 我悟了:

一:相同事件绑定和解除,需要使用共用函数;

二:共用函数不能带参数;

于是我改成

document.addEventListener('touchmove', checkedTarget, { passive: false });
document.removeEventListener('touchmove', checkedTarget, { passive: false });

补充一下这样写也是不对的 因为不满足第一个条件

document.addEventListener('touchmove', (e) => e.preventDefault(), { passive: false });

// 触摸移动事件
document.removeEventListener('touchmove', (e) =>e.preventDefault(), { passive: false });

至此,彩笔艺术已成!

后来我找到更简单的办法 在自己的页面不想让滑动的位置可以给设置属性 无论是动态设还是css写死 均可
给不想让ios用户点击能滑动的地方设置上 这些地方在安卓机上本来也是滑动不了的
一行代码能解决的问题 由于pc上没有ios模拟器以及没有用ios手机本地调试 需要改完打包发版 借手机看效果 被我研究了多半天的时间 恨自己菜啊

touch-action: none;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容