如何解决移动端的滑动事件总是出现无法侦听被动事件?

使用 swiper.js jquerymobile.js 等移动端js库的时候,如果使用了滑动事件,不时会看到报错:“
Unable to preventDefault inside passive event listener due to target being treated as passive”。但奇怪的是脚本运行正常,而且在不同的库和项目中我都能看见这种情况,我觉得不是个例。

所以我想问一下,出现这个问题通常是什么原因,各位又是如何解决、排查这个问题的?

阅读 53k
5 个回答

如图所示
图片描述

而这些库也用到了这个咯。所以你在里面写preventDefault方法都是无效的
证据如下
图片描述

css中加上这句* { touch-action: none; }一般就可以了

遇到了和你一样的问题,没人来回答啊?
我的代码是:


<div class="demo">
    <div>点击这里</div>
</div>
document.addEventListener('touchmove', function(event) {
    var e = event||window.event;
    var p = event.target.closest('.demo');
    if (!p) {
        e.preventDefault();
    }
},false);

错误:

Unable to preventDefault inside passive event listener due to target being treated as passive. See https://www.chromestatus.com/...

在swiper的初始项里面加上passiveListeners: false,即可,具体搜一下passiveListeners

新手上路,请多包涵

直接加this.addEventListener('mousewheel', _onWheel,{ passive: false });

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
1 篇内容引用
推荐问题
宣传栏