Javascript 如何使用用户控制的切换(启用/禁用)禁用iOS设备(iPad、iPhone、Mac)上的滚动/滚动

Javascript 如何使用用户控制的切换(启用/禁用)禁用iOS设备(iPad、iPhone、Mac)上的滚动/滚动,javascript,jquery,html,ios,scroll,Javascript,Jquery,Html,Ios,Scroll,在回顾有关StackOverflow这个主题的许多问题和答案时,没有一个解决方案能够可靠地工作。所有CSS、JavaScript、jQuery和混合解决方案都至少有一个缺陷,使滚动无法有效禁用和/或切换 我也在网上到处搜索,没有找到一个好的答案 到目前为止,我有这个功能: function toggleScroll(btn, item) { $(btn).click(function() { $(item).toggleClass("noscroll"); }); } …这将添加一个溢

在回顾有关StackOverflow这个主题的许多问题和答案时,没有一个解决方案能够可靠地工作。所有CSS、JavaScript、jQuery和混合解决方案都至少有一个缺陷,使滚动无法有效禁用和/或切换

我也在网上到处搜索,没有找到一个好的答案

到目前为止,我有这个功能:

function toggleScroll(btn, item) {
 $(btn).click(function() {
  $(item).toggleClass("noscroll");
 });
}
…这将添加一个
溢出:隐藏
指向我想要的任何类
单击
,然后在第二次单击时将其删除

问题是,这段代码不适用于iOS设备

我如何在iOS设备上实现这一点

理想情况下,我更喜欢纯CSS解决方案。但我知道这可能是不可能的,尤其是切换组件

任何JavaScript或jQuery解决方案都可以


提前谢谢

使用jQuery禁用iOS设备(iPad、iPhone、Mac)上的滚动

我想这会让你接近你想要的。唯一的问题可能是切换,这是两个按钮(启用和禁用)。如果你想让切换成为一个单一的按钮,也许你可以发布一个单独的问题,或者其他人可以改进这个答案。(我基本上是一个HTML/CSS/PHP的家伙。我对JS有些陌生)

学分:



使用CSS禁用iOS设备(iPad、iPhone、Mac)上的滚动

对于在iOS设备上禁用滚动的纯CSS解决方案,请尝试以下选项:
(当然,这些选项没有切换。)


以下是我在这个问题上读到的一些帖子和文章


那么,我如何在单击按钮时将滚动锁定到当前位置,然后在再次单击同一按钮时解锁?本部分将介绍和。这些解决方案包括按两个按钮启用和禁用滚动。一个用于关闭,一个用于打开。用一个按钮我怎么做?单击=滚动关闭,再次单击=滚动打开?如果我的答案不能解决您的问题,请告诉我。我可能需要更好地理解这些函数,因为我对JS比较陌生!只是不是一路走来。我想我有办法了,我会告诉你的。
var disableScroll = false;
var scrollPos = 0;
function stopScroll() {
    disableScroll = true;
    scrollPos = $(window).scrollTop();
}
function enableScroll() {
    disableScroll = false;
}
$(function(){
    $(window).bind('scroll', function(){
         if(disableScroll) $(window).scrollTop(scrollPos);
    });
    $(window).bind('touchmove', function(){
         $(window).trigger('scroll');
    });
});
html, body {
    position: fixed;
}

html, body {
    position: relative;
    overflow: hidden;
}

body {
    position: fixed;
    overflow: hidden;
}

body {
    position: fixed;
    height: 100%;
    overflow: hidden;
    width: 100%;
}