在开发时"tochstart","touchend"无法被触发的解决办法

本文探讨了在前端开发中,触屏事件touchstart和touchend为何在特定情况下无法触发的问题。作者通过调整事件监听器的实现方式,解决了事件不响应的困扰,并分享了解决方案及遇到的Unable to preventDefault inside passive event listener警告的处理方法。
摘要由CSDN通过智能技术生成

先说原因:今天我在写翻页功能时,加了如下代码

 this.rendition = this.book.renderTo("reader", {
        width: innerWidth,
        height: innerHeight,
        methods: "default"
      });

  this.rendition.on("touchstart", event => {
 	console.log(event)
  });

  this.rendition.on("touchend", event => {
   console.log(event)
}
当我去控制台去查看时,发现无论怎么点击都没有用,tochstart和touchend居然没有被触发。当时我网上查找了好久,按理说代码没有错误啊。
当我把touchstart和tochend的代码改成如下代码时,竟然奇迹般的可以用了
    var event = new Event('touchstart');
   this.rendition.on('touchstart', function (e) { console.log(e) }, false);
   this.rendition.dispatchEvent(event);
   这还不是最气人的,当我把这些代码完全改回之前的样子时
   即改成了    
    this.rendition.on("touchstart", event => {
 	console.log(event)
  });
   ,之前无法被触发的又能触发了。
   唉...我是个刚刚入前端的菜鸟,也不知道这是啥原因。希望大佬可以解释一下,为什么之前不能被触发的touchstart又能被触发了。
   还有一个就是怎么解决`Unable to preventDefault inside passive event listener due to target being treated as passive.`
   在下面添加这些代码即可


      document.addEventListener('touchstart', function(event) {
    
    if (event.cancelable) {
        
        if (!event.defaultPrevented) {
            event.preventDefault();
        }
    }
}, false);
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值