Javascript Can';在mac上最新的Chrome版本(59)中不能阻止导航手势

Javascript Can';在mac上最新的Chrome版本(59)中不能阻止导航手势,javascript,google-chrome,gesture,macos-sierra,preventdefault,Javascript,Google Chrome,Gesture,Macos Sierra,Preventdefault,无法完全禁用两个手指的滑动手势来浏览整个网站的浏览器历史,这对我来说是一个持续的烦恼。到目前为止,至少可以通过对mousewheel事件调用preventDefault()来防止这种行为 这在Chrome59中似乎不再起作用了 下面是如何复制它: 在页面上的某个位置开始这个手势,然后取消它 从那以后,违约就没有效果了 有人能解决这个问题吗 例子 和Airtable都在其表视图内滚动时调用默认值。一开始它似乎起作用,但一旦识别出手势,然后至少取消一次(在表外,不调用“防止默认值”),阻止手势就不再

无法完全禁用两个手指的滑动手势来浏览整个网站的浏览器历史,这对我来说是一个持续的烦恼。到目前为止,至少可以通过对mousewheel事件调用preventDefault()来防止这种行为

这在Chrome59中似乎不再起作用了

下面是如何复制它:
  • 在页面上的某个位置开始这个手势,然后取消它
  • 从那以后,违约就没有效果了 有人能解决这个问题吗

    例子 和Airtable都在其表视图内滚动时调用默认值。一开始它似乎起作用,但一旦识别出手势,然后至少取消一次(在表外,不调用“防止默认值”),阻止手势就不再起作用(甚至在表内)。因此,从那以后,在桌子里面向左滚动几乎是不可能的,因为它总是触发手势

    在Trello的看板视图中,只有当您位于滚动条的左边缘或右边缘时,才会出现这种情况。但我猜这是因为他们使用本机滚动,而Zenkit和Airtable使用css翻译

    一旦用户开始滚动,我尝试在内容顶部创建一个不可见的滚动容器,然后将其删除。这大大减少了问题,但并非在所有情况下都有效

    示例代码:

    这支钢笔里有三个盒子

    • 第一个使用overflow:scroll本机滚动。此处,只有当scrollLeft为0时,才能触发该手势

    • 第二个具有附加的事件侦听器,该侦听器在每个鼠标滚轮事件上调用preventDefault。这会在一开始阻止这个手势,但一旦你在页面上的任何其他地方启动它,它就不再起作用了

    • 最后还有第三个div,你可以随时开始这个手势

    StackOverflow希望我也内联代码,因此它是:

    HTML:

    CSS:

    提前感谢,, 杰西

    编辑:关于已接受的答案
    重新启动Chrome暂时解决了这个问题,但它会不断出现。我现在使用的是Chrom 69,但它仍然存在。

    您是否尝试过将其关闭并再次打开?

    查看我的答案

    这是Chrome上的预期行为

    如果您是开发人员,请尝试使用overscroll行为来修复它。

    如果您是用户,请尝试禁用MacOS上的overscroll滑动 设置。请参阅您提供的线程。

    For event.preventDefault()不是每个控制盘事件都可以取消的。


    请告诉我你在开玩笑。编辑:OMG重新启动chrome确实解决了这个问题,所以重新启动chrome暂时解决了这个问题,但它总是会回来。我现在使用的是Chrom 69,但它仍然存在。有人找到了真正的解决办法吗?
     Native Scrolling:
    <div id="native-scrolling" class="box">
      <div></div>
     </div>
    
    Prevent gesture by calling prevent default. Only works if you didn't start the gesture anywhere else, yet:
    <div id="prevent-gesture" class="box"></div>
    
    Just a normal div:
    <div class="box"></div>
    
    $('#prevent-gesture').on('mousewheel', function (event) {
      event.preventDefault();
    });
    
    .box {
      height: 100px;
      width: 200px;
      background: black;
    }
    
    #native-scrolling {
      overflow: scroll;
    }
    
    #native-scrolling > div {
      width: 200%;
      height: 10px;
    }