Javascript 触摸设备防止父元素滚动

Javascript 触摸设备防止父元素滚动,javascript,jquery,css,touch,Javascript,Jquery,Css,Touch,我已经为这个问题搜索了数百次,但我没有找到一个明确的工作答案,所以我把它放在后面一段时间,但现在我回到这个问题上,仍然找不到解决方案 我使用下面的脚本来防止在浏览器中使用鼠标滚动父元素,但是我找不到类似的方法来防止在触摸设备中滚动父元素 $(document).on('DOMMouseScroll mousewheel', '.parentunscroll', function(ev) { var $this = $(this), scrollTop = this.scr

我已经为这个问题搜索了数百次,但我没有找到一个明确的工作答案,所以我把它放在后面一段时间,但现在我回到这个问题上,仍然找不到解决方案

我使用下面的脚本来防止在浏览器中使用鼠标滚动父元素,但是我找不到类似的方法来防止在触摸设备中滚动父元素

$(document).on('DOMMouseScroll mousewheel', '.parentunscroll', function(ev) {
    var $this = $(this),
        scrollTop = this.scrollTop,
        scrollHeight = this.scrollHeight,
        height = $this.height(),
        delta = (ev.type == 'DOMMouseScroll' ?
            ev.originalEvent.detail * -40 :
            ev.originalEvent.wheelDelta),
        up = delta > 0;

    var prevent = function() {
        ev.stopPropagation();
        ev.preventDefault();
        ev.returnValue = false;
        return false;
    }

    if (!up && -delta > scrollHeight - height - scrollTop) {
        // Scrolling down, but this will take us past the bottom.
        $this.scrollTop(scrollHeight);
        return prevent();
    } else if (up && delta > scrollTop) {
        // Scrolling up, but this will take us past the top.
        $this.scrollTop(0);
        return prevent();
    }
});
我在这里研究了几十个类似的线程,但找不到一个实际上可以双向工作的解决方案:防止鼠标和触摸事件上的父级滚动溢出元素


希望有人已经做到了这一点;我相信这会帮助很多人回答同样的问题。

我没有答案,但由于没有人发帖,我只想告诉大家我认为可以这样做的方式:
1) 在触摸事件中,您有一个滚动事件,但它在滚动开始后会被触发,因此即使您随后更正文档滚动位置,屏幕上也会出现一些非常恼人的移动。
2) 我认为要做的就是像老鼠一样。。。除了你没有touchscroll事件。。。因此,如果您看到顶部/底部已准备就绪,则必须“手动”检测并取消它。
困难的解决办法

您可能希望检查是否有这样的libs,但我所知道的libs会警告您有滚动,但不会让您取消滚动(就像案例(1)中那样太晚了)


希望有人会建议更简单的方法/正确的库…

您能显示您用于防止触摸滚动的代码吗?我想知道您的问题是否是因为触摸设备也会发出假鼠标事件以确保兼容性,所以您需要处理和取消这两个事件。嗯,我没有任何代码可显示。我所做的一切都不起作用,所以我没有保存任何东西。希望有人能为我提供一个工作代码:/I我刚刚检查了我的输入库:使用stopPropagation和preventDefault处理程序处理touch start/move/end/cancel,以防止在iPad4上滚动。如果我理解的很好,你不想总是阻止滚动,但只是当。。。自从我们到达起点或终点就已经不可能了?或者我遗漏了什么?上面的代码在iphone或ios 7上的ipad上都不适用于我。你能回答我的第二个问题吗?显示的代码仅在滚动过高或过低时进行测试,以防止出现默认值。您想总是阻止在父级上滚动,还是仅在满足某些条件时才这样做?也许您希望它能够滚动,但当达到限制时,滚动不会在文档中传播上限?谢谢您的努力。正如你所说,希望有人会回答。我很惊讶没有人需要类似的东西和/或有解决方案。