向滚动阻塞的“touchstart”事件添加了非被动事件侦听器

新手上路,请多包涵

今天突然间,不知从哪里冒出来,我开始在我们网站的每一页上都看到这个

Added non-passive event listener to a scroll-blocking 'touchstart' event.
Consider marking event handler as 'passive' to make the page more responsive

而且不只是一次或两次……它就像成千上万的……

在此处输入图像描述

他们在胡闹。

阻止大量违规行为的唯一方法是注释掉这一行

  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js" type="text/javascript"></script>

我阅读了其他关于这种违规意味着什么的帖子,但我真的看不出我在两个小时前和现在做了什么不同(我做了一个完整的回滚只是为了看看它是否有帮助)

这几乎就像有人在 jquery.min.js 中放置了一个错误,但我对此表示严重怀疑,因为那样每个人都会得到它。

有任何想法吗?我尽我所能地调试,但我仍然不知道是什么原因造成的?!?

更新

我将所有 <button><md-tooltip>text</md-tooltip></button> 替换为 <button data-toggle="tooltip" title="text"></button> 这消除了 99% 的违规行为。

原文由 torbenrudgaard 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.4k
2 个回答

好吧,再深入一点,这不是一个新行为,不久前就有报道了,jQuery 仍然没有修复它。

问题在于一个处理程序是 passive 它必须确定永远不会调用 preventDefault() 但 jQuery 事先不知道……

我能给你的唯一提示是更改控制台日志记录级别并删除“详细”。跟进 此问题以获取解决此问题 的想法。

原文由 Salketer 发布,翻译遵循 CC BY-SA 3.0 许可协议

这解决了我的问题:

 jQuery.event.special.touchstart = {
  setup: function( _, ns, handle ){
    if ( ns.includes("noPreventDefault") ) {
      this.addEventListener("touchstart", handle, { passive: false });
    } else {
      this.addEventListener("touchstart", handle, { passive: true });
    }
  }
};

原文由 Sergio 发布,翻译遵循 CC BY-SA 3.0 许可协议

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