如何在iOS 11.3野生动物园中禁用视口缩放?

Fri*_*ver 3 javascript css mobile-safari scale ios11.3

我已经尝试过所有(是的!!!!)这个问题的解决方案,但似乎在iOS 11.3上没有任何作用?

有人成功阻止了iOS 11.3的缩放吗?PS:我知道有充分的理由不防止捏缩...。但是我别无选择。非常感谢您,我的英语也很抱歉。

Dan*_*ski 8

请注意,大多数这些选项破坏了许多功能,并且对可访问性等不利,但是,某些应用程序(尤其是多点触摸PWA)需要禁用这些功能。使用风险自负。

关于父项他们已经尝试了链接中的所有解决方案的评论,请注意“请注意,如果有更深的目标在事件上调用stopPropagation,则事件将不会到达文档,并且不会阻止缩放行为。由这个听众。”-这是关键。

添加此脚本标签可在iOS 11.3 Safari上运行(已在iPhone SE上测试)

<script>
    document.addEventListener('touchmove',
        function(e) {
            e.preventDefault();
        }, {passive:false});
</script>
Run Code Online (Sandbox Code Playgroud)

当然,您随后必须处理所有触摸输入(如果您需要自定义的多触摸PWA,则无论如何都必须这样做)。

  • 一个警告是,这种方式禁用了滚动(也许有解决方法?),但是当您需要单个屏幕PWA时,这是一个加号。

  • 另一个警告是,对于类似PWA的行为,内容本身最多需要

    height:100%
    
    Run Code Online (Sandbox Code Playgroud)

    这样,Safari的顶部和底部栏(URL和底部导航)不会切断任何内容(至少在纵向方向上)。

  • 最后要注意的是,在此模式下,双击以放大仍然起作用。禁用它的最佳方法是在根节点上设置以下内容

    touch-action:manipulation;
    
    Run Code Online (Sandbox Code Playgroud)

    但是,这仅在根节点可单击时有效,因此请onclick向元素中添加一个空处理程序。

    最后,因为该节点现在是可单击的,所以它可能具有您不想要的按钮的半透明覆盖层,可以将其隐藏为

    -webkit-tap-highlight-color: rgba(0,0,0,0);
    
    Run Code Online (Sandbox Code Playgroud)