首页 > 解决方案 > 由于目标被视为被动,无法在被动事件侦听器中阻止默认值 - Chrome

问题描述

我使用了下面的代码并开始得到下面提到的错误代码有什么问题以及修复它的方法是什么。

由于目标被视为被动,无法在被动事件侦听器中阻止默认值。见https://www.chromestatus.com/features/6662647093133312

<script>
jQuery(window).scroll(function() {

  if (jQuery(this).scrollTop() > 400) {

    jQuery('.headerN').css("width", "100%");
    jQuery('.headerN').slideDown();
  } else {
    jQuery('.headerN').slideUp();
  }
});
</script>

标签: javascriptjquerypassive-event-listeners

解决方案


在 JQuery 中,它仍然是一个未解决的问题:https ://github.com/jquery/jquery/issues/2871

您可以在事件中使用 vanilla js 执行此操作:

el.addEventListener('someEvent', someFn, { passive: false });

这就是上面提到的 github 线程上的某个人如何创建他们实施的解决方法:

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 });
        }
    }
};

推荐阅读