【问题标题】:Scroll not working on Android Chrome only滚动仅在 Android Chrome 上不起作用
【发布时间】:2014-12-24 01:00:59
【问题描述】:

由于某些原因,滚动仅在 Chrome 浏览器中无法在 Android 设备上运行。

您可以在 Peshkuiarte.com/mobile 上查看该网站

我试过了:

    $(document).ready(function() {
      $('body').css('touch-action', 'auto');
  });

我似乎无法弄清楚...任何帮助将不胜感激

【问题讨论】:

    标签: javascript android css google-chrome


    【解决方案1】:

    滚动是指在移动设备上用手指拖动页面吗?

    您已将 -webkit-user-drag: none; 设置为 body 的内联样式,这可能是原因。

    这是一个特定于 Webkit 的属性:

    CSS 属性:-webkit-user-drag

    说明

    指定整个元素应该是可拖动的,而不是其内容。

    语法

    -webkit-user-drag: auto | element | none;
    

    价值观

    • auto使用默认的拖动行为。

    • element 整个元素是可拖动的,而不是其内容。

    • none该元素根本无法拖动。

    Chrome 1-17 和 Safari 3-5.1 支持:http://www.browsersupport.net/CSS/-webkit-user-drag

    【讨论】:

    • 就是这样,我不明白为什么要设置这些属性?感谢您的帮助
    • 完美!这就是我一直在寻找的...... :)
    【解决方案2】:

    我们在 Chrome 40.0 上遇到了同样的问题......我们只使用 css 解决方案进行了修复。也许它不干净但对我们有用:

    @media screen and (max-width: 1024px) {
        html, body {
            z-index: 0 !important;
            overflow: scroll !important;
        }
    }
    

    【讨论】:

      【解决方案3】:

      就我而言,我发现touch-action: none 添加到body 元素上。 删除它可以在 android chrome 中滚动。

      总结

      touch-action CSS 属性指定是否和在 用户可以通过什么方式操作给定区域(例如 例如,通过平移或缩放)。

      来源:https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action

      希望它能帮助处理遗留代码的人:)

      【讨论】:

        【解决方案4】:

        e.preventDefault

        function handlerSwipe(e){
          e.preventDefault();
          if(handlerTouch){
            if(e.changedTouches[0].clientX>=110)
            toggle.checked=true;
            else toggle.checked=false;
          }
          return false;
          }
          window.addEventListener("touchmove", handlerSwipe, false);
        

        这是我用于创建可滑动导航抽屉的代码,因为此滚动不起作用。只需从上述代码中删除 e.preventDefault(); 即可解决我的问题

        【讨论】:

          【解决方案5】:

          我不太确定这个问题,你说“滚动”,但接受的答案是“拖动”。因此,我将向您提供我认为您要问的内容(无法在移动设备上的区域内滚动)。

          最简单的解决方案是 CSS 解决方案,而不是 JS 解决方案。如果您的页面上有需要滚动的区域,例如技术博客上的代码块,您可以在该区域上设置相对位置并将溢出-x 设置为自动。在身体上,当您触摸屏幕时,您需要让它不动。

          pre { white-space: pre-wrap; overflow-y: auto; position: relative; }

          html,body{ position: absolute; top: 0; left: 0; right: 0; bottom: 0; } 如果您查看代码 sn-p 部分并尝试通过 chrome mobile 在它们上滚动,您可以在我的博客上看到此解决方案。(http://fullstack.life/mapping_arrays.html)

          【讨论】:

            【解决方案6】:

            指针事件

            我今天遇到了另一个问题,我将把它留在这里以供参考。如果带有overflow-y: scroll; 的元素设置它的pointer-events: none; 或继承它,那么它也不起作用。在这一层,需要重新启用指针事件:

            pointer-events: auto;
            

            【讨论】:

              【解决方案7】:

              这是对我有用的这个问题的修复方法。

              当您在 javascript 类中调用 niceScroll 函数 $("body").niceScroll(); 时,它似乎在您的 body 元素上添加了一个内联样式:overflow-y: visible(因为它是内联的,它会覆盖您之前可能拥有的任何 overflow: hidden写在你的css文件中。

              只需在 body 元素的 CSS 中添加 overflow: hidden ! important

              另外,请确保您的 html 元素的样式为

              overflow: hidden;
              touch-action: none;
              

              【讨论】:

                猜你喜欢
                • 2018-08-11
                • 1970-01-01
                • 1970-01-01
                • 2013-05-04
                • 2018-06-20
                • 2018-07-11
                • 1970-01-01
                • 2015-05-02
                • 1970-01-01
                相关资源
                最近更新 更多