当前位置: 首页 > 知识库问答 >
问题:

禁用视口缩放iOS 10 Safari?

淳于乐池
2023-03-14

我已经将我的iPhone 6 plus升级到iOS 10测试版,刚刚发现在移动safari中,你可以通过双击或捏IGNORE来缩放任何网页。我不知道是bug还是功能。如果将其视为一项功能,我们如何禁用iOS 10 safari的视口缩放?

iOS 11/12 版本更新,iOS 11 和 iOS 12 野生动物园仍然不尊重用户可扩展=无元标记。

共有3个答案

易扬
2023-03-14

在撰写本文时,在MobileSafari中有效的解决方法是将addEventListener中的第三个参数设置为{被动: false},因此完整的解决方法如下所示:

document.addEventListener('touchmove', function (event) {
  if (event.scale !== 1) { event.preventDefault(); }
}, { passive: false });

您可能需要检查是否支持选项以保持向后兼容。

刘安志
2023-03-14

这是iOS 10中的新功能。

来自iOS 10 beta 1发行说明:

  • 为了改进 Safari 中网站的辅助功能,用户现在可以捏合缩放,即使网站在视口中设置了用户可缩放=否

我希望我们很快会看到一个JS插件来以某种方式禁用它。

长孙景天
2023-03-14

在iOS 10上的safari中防止网页缩放是可能的,但这需要你做更多的工作。我想争论的焦点是,一定程度的困难应该阻止cargo-cult开发人员在每个viewport标签中加入“user-scalable=no ”,并为视力受损的用户制造不必要的困难。

尽管如此,我还是希望看到Apple更改其实现,以便有一种简单的(元标记)方法来禁用双击缩放。大多数困难与这种互动有关。

您可以通过以下方式停止缩放:

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

请注意,如果任何更深层次的目标对事件调用 stopPropagation,则该事件将不会到达文档,并且此侦听器不会阻止缩放行为。

禁用双击缩放类似。您禁用在上一次点击后300毫秒内对文档进行的任何点击:

var lastTouchEnd = 0;
document.addEventListener('touchend', function (event) {
  var now = (new Date()).getTime();
  if (now - lastTouchEnd <= 300) {
    event.preventDefault();
  }
  lastTouchEnd = now;
}, false);

如果您没有正确设置表单元素,专注于输入将自动缩放,并且由于您大多禁用了手动缩放,现在几乎不可能取消缩放。确保输入字体大小为

如果您尝试在本机应用程序的 WKWebView 中解决此问题,上面给出的解决方案是可行的,但这是一个更好的解决方案:html" target="_blank">https://stackoverflow.com/a/31943976/661418。正如其他答案中提到的,在iOS 10 beta 6中,Apple现在提供了一个标志来尊重元标记。

2017年5月更新:我用更简单的“在触摸移动时检查事件.缩放”方法取代了旧的“在触摸开始时检查触摸长度”方法来禁用缩放。对大家来说应该比较靠谱。

 类似资料:
  • 问题内容: 我已经尝试了所有这三个方法,但均无济于事: 每个都是我通过Google搜索或SO搜索推荐的不同值,但是’ user-scaleable = X ‘值似乎都不起作用 我还尝试了用逗号分隔值,而不是分号,没有运气。然后,我尝试只具有价值,仍然没有运气。 更新 从苹果网站上得到了它,它的工作原理是: 原来问题出在非标准引号上,因为我从使用它们的网站复制了元标记,哎呀 问题答案: 您的代码将属

  • 问题内容: 有谁知道禁用WKWebView中的双击和缩小缩放的简单方法?我没有尝试过的工作: 在html中: 问题答案: 您将必须在脚本中添加最大比例。 以下代码应为您提供帮助:

  • 问题内容: 有没有一种方法可以禁用div缩放或网站上的任何特定元素?例如,如果我希望页面是可缩放的,而不是#Header div,是否有一种方法可以使一个缩放,而另一个不能缩放? 基本上,当您在移动设备上缩放时,它也会缩放Header,但是我希望Header始终保持固定大小(不可缩放)。 我知道您可以使用以下代码来禁用整体缩放: 问题答案: 没有聪明的黑客,您将无法做到这一点。 但是,您可以(并且

  • 问题内容: 我需要实现变焦为包含在。我已经通过覆盖方法和调用来成功进行缩放。 这是不正常:对的和的规模如预期,但一定会得到的和这样的寄存器在预分频的位置。我能做什么?感谢您的阅读。 问题答案: 显示了如何使用明确的转化方法扩展鼠标坐标:,,和。)。

  • 我正在尝试调整嵌入到div容器中的svg的大小和缩放。我的目标是通过道具改变te svg作为一个React组件。您可以在这里查看代码沙箱。 我使用viewbox和矩阵变换使svg圆圈保持其在窗口调整大小上的位置。我可以在鼠标滚轮上相应地缩放圆圈。对于缩放,我在window resize事件上设置组件状态中父容器的宽度和高度。 但是当我在改变窗口大小之前缩放时,圆圈就不在它的位置了。 你知道如何使我

  • 本文向大家介绍如何禁止手机端页面缩放?相关面试题,主要包含被问及如何禁止手机端页面缩放?时的应答技巧和注意事项,需要的朋友参考一下 document.documentElement.addEventListener('touchstart', function (event) { if (event.touches.length > 1) { event.preventDefault(); } }

  • 本文向大家介绍如何禁止web端的页面缩放?相关面试题,主要包含被问及如何禁止web端的页面缩放?时的应答技巧和注意事项,需要的朋友参考一下

  • 本文向大家介绍vue h5移动端禁止缩放代码,包括了vue h5移动端禁止缩放代码的使用技巧和注意事项,需要的朋友参考一下 安卓 在index.html里面写 ios 在APP.vue里面写 以上这篇vue h5移动端禁止缩放代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。