Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 与'有关的问题;无法防止默认(…),因为目标被视为被动';——在实施解决方案时遇到问题_Javascript_Scroll_Preventdefault - Fatal编程技术网

Javascript 与'有关的问题;无法防止默认(…),因为目标被视为被动';——在实施解决方案时遇到问题

Javascript 与'有关的问题;无法防止默认(…),因为目标被视为被动';——在实施解决方案时遇到问题,javascript,scroll,preventdefault,Javascript,Scroll,Preventdefault,很抱歉,这并不是一个“代码问题”,但我对编程社区有一些信心,所以我还是会问 每当我向下滚动时,我总是在开发工具中遇到这个错误:“由于目标被视为被动的,所以无法在被动事件侦听器中防止默认。” 我知道这是由谷歌的更新引起的。问题是,我看到了解决方案,但对如何实现它们却一无所知 (请注意,我没有使用jQuery) 下面是使用preventDefault的一段代码: window.addEventListener("wheel", function(event) { viewStart

很抱歉,这并不是一个“代码问题”,但我对编程社区有一些信心,所以我还是会问

每当我向下滚动时,我总是在开发工具中遇到这个错误:“由于目标被视为被动的,所以无法在被动事件侦听器中防止默认。”

我知道这是由谷歌的更新引起的。问题是,我看到了解决方案,但对如何实现它们却一无所知

(请注意,我没有使用jQuery)

下面是使用preventDefault的一段代码:

   window.addEventListener("wheel", function(event) {
      viewStart = scrolled.scrollTop;
      if (!pageJump) {
        var pageHeight = page.scrollHeight;
        var pageStopPortion = pageHeight / 2;
        var viewHeight = window.innerHeight;

        var viewEnd = viewStart + viewHeight;
        var pageStartPart = viewEnd - pageStart;
        var pageEndPart = pageStart + pageHeight - viewStart;

        var canJumpDown = pageStartPart >= 0;
        var stopJumpDown = pageStartPart > pageStopPortion;

        var canJumpUp = pageEndPart >= 0;
        var stopJumpUp = pageEndPart > pageStopPortion;

        var scrollingForward = event.deltaY > 0;
        if (
          (scrollingForward && canJumpDown && !stopJumpDown) ||
          (!scrollingForward && canJumpUp && !stopJumpUp)
        ) {
          event.preventDefault();
          scrollToPage();
        }
        false; //
      } else {
        event.preventDefault();
      }
    });
下面是stackoverlow建议的解决方案:

我知道这是建议我添加以下代码:

el.addEventListener('someEvent', someFn, { passive: false });
有人能指导我如何“添加”它吗? 因此,与以下情况不同:

event.preventDefault();
我应该使用这个代码吗

window.addEventListener("wheel", function(event){
...all of the code except 'event.preventDefault()'...
}, {passive: false});

还是我把一切都搞砸了?老实说,任何反馈都将非常感谢。

您按照它显示的内容执行操作,除了用事件处理程序函数替换
someFn

window.addEventListener("wheel", function(event) {
   viewStart = scrolled.scrollTop;
   if (!pageJump) {
     var pageHeight = page.scrollHeight;
     var pageStopPortion = pageHeight / 2;
     var viewHeight = window.innerHeight;

     var viewEnd = viewStart + viewHeight;
     var pageStartPart = viewEnd - pageStart;
     var pageEndPart = pageStart + pageHeight - viewStart;

     var canJumpDown = pageStartPart >= 0;
     var stopJumpDown = pageStartPart > pageStopPortion;

     var canJumpUp = pageEndPart >= 0;
     var stopJumpUp = pageEndPart > pageStopPortion;

     var scrollingForward = event.deltaY > 0;
     if (
       (scrollingForward && canJumpDown && !stopJumpDown) ||
       (!scrollingForward && canJumpUp && !stopJumpUp)
     ) {
       event.preventDefault();
       scrollToPage();
     }
     false; //
   } else {
     event.preventDefault();
   }
 }, {passive: false});
//  ^^^^^^^^^^^^^^^^


旁注:
false块没有任何作用,则在第一个
块的末尾执行code>。删除它。

我应该使用这个代码吗?
好吧,试试看。。?那你就有答案了