这三种方法我都试过了,但都无济于事:

<meta name=”viewport” content=”width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;” />

<meta name=”viewport” content=”width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=false;” />

<meta name=”viewport” content=”width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no;” />

每个是不同的值,我发现谷歌搜索或SO搜索推荐,但没有一个'user-scalable=X'值似乎是工作的

我还尝试用逗号来分隔值,而不是分号,运气不好。然后我尝试只呈现用户可扩展的价值,但仍然没有成功。


更新

从苹果的网站上得到了这个,它是有效的:

<meta name="viewport" content="width=device-width, user-scalable=no" />

事实证明,问题是不标准的引号,因为我从一个网站复制了元标签,正在使用他们,哎呀


当前回答

使用CSS的touch-action属性是最优雅的解决方案。在iOS 13.5和iOS 14上测试。

禁用缩放手势和双击缩放:

body {
  touch-action: pan-x pan-y;
}

如果你的应用程序也不需要平移,即滚动,使用这个:

body {
  touch-action: none;
}

其他回答

为了符合WAI WCAG 2.0 AA可访问性要求,您必须永远不要禁用缩放。(WCAG 2.0: SC 1.4.4 Resize text Level AA)。你可以在这里阅读更多关于它的内容:移动辅助功能:WCAG 2.0和其他W3C/WAI指南如何应用于移动,2.2缩放/放大

截至今天(2022年10月),在iOS 14.8上,我可以完全防止双击缩放的唯一方法是:

document.addEventListener("click", (e) =>
        {
            e.preventDefault();
        })

即使是这样的:

* {
    touch-action: none !important;
}

(这显然是不现实的,但只是为了演示目的)在每种情况下都是不够的。事实证明,任何我处理过的for元素点击,双击它将导致几乎不可逆的放大,完全忽略触摸操作设置。但是如果我在点击处理程序中调用preventDefault(),它就不会缩放。因此,到目前为止,在文档级别上这样做似乎就足够了,这样我就不必每次处理单击时都这样做。

我不知道这可能会有什么副作用,但我相信如果人们想到了什么,他们会插话的。

试着在你的头标签上添加以下内容:

<meta name="viewport" content="width=device-width, initial-scale=1.0, 
minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">

另外

<meta name="HandheldFriendly" content="true">

最后,无论是作为一个样式属性还是在你的css文件中,为基于webkit的浏览器添加以下文本:

html {
    -webkit-text-size-adjust: none
}

对于iphone safari到iOS 10“viewport”不是一个解决方案,我不喜欢这种方式,但我已经使用了这个javascript代码,它帮助了我

 document.addEventListener('touchmove', function(event) {
    event = event.originalEvent || event;
    if(event.scale > 1) {
      event.preventDefault();
    }
  }, false);

有时候内容标签中的其他指令会打乱苹果关于如何布局页面的最佳猜测/启发式,你只需要禁用缩放。

<meta name="viewport" content="user-scalable=no" />