在iOS 11设备上防止Safari浏览器网页触摸/滚动

4

我曾经使用以下代码来防止触摸设备上的网页滚动(在iOS上进行了具体测试)。

disableScroll = false;
$(document).on('touchmove',function(e) {
    if (disableScroll) {
        e.preventDefault();
    }
});

然而,自从iOS 11以后,这种方法已经不再起作用。我可以使用iOS模拟器回到iOS 9和iOS 10进行测试,它可以正常工作,但在iOS 11上却不行了。有没有人能提供另一种解决方案呢?

例如,在iOS 9/10上测试类似的功能是可行的,但在iOS 11上却不行。 https://benfrain.com/preventing-body-scroll-for-modals-in-ios/


另一种选择可能是使用CSS,在body或想要停止滚动的标签中添加overflow: hidden。我通常有一个通用类叫做.no-scroll,我会用JS应用它,而不是阻止默认事件。 - Adrian Florescu
2
@AdrianFlorescu 谢谢,但这在iOS上不起作用。 - John the Painter
哦,你说得对,这很奇怪... - Adrian Florescu
你找到解决办法了吗,约翰?! - Tom Danvers
1个回答

1

你需要将preventDefault绑定到两个事件上:touchmove && touchforcechange。https://bugs.webkit.org/show_bug.cgi?id=163207 - User007

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接