使用 Javascript 启用/禁用 iPhone Safari 的缩放?

Posted

技术标签:

【中文标题】使用 Javascript 启用/禁用 iPhone Safari 的缩放?【英文标题】:Enable/disable zoom on iPhone safari with Javascript? 【发布时间】:2011-02-14 13:19:11 【问题描述】:

我有 1 个页面,其中包含 2 个 DIV 元素,这些元素根据用户使用 javascript 对操作按钮的点击显示/隐藏,我想在点击操作按钮时切换缩放。

我尝试使用下面的 javascript,它正在更改视口元数据,但没有任何效果。

有什么建议吗?

var ViewPortAllowZoom = 'width=device-width;';

var ViewPortNoZoom = 'width=device-width; initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=no;';

  function AllowZoom(flag) 
            if (flag == true) 
                $('meta[name*=viewport]').attr('content', ViewPortAllowZoom);                
            
            else 
                $('meta[name*=viewport]').attr('content', ViewPortNoZoom);
            
        

【问题讨论】:

【参考方案1】:

这些是禁用缩放的步骤:

    说服您的 PM 禁用是一个坏主意(请参阅下面的文章)。 如果他还想要,就更努力地说服他。 如果他仍然想要它,请阅读这篇文章并将 preventDefault 添加到gesturestart,如评论中所述: https://wouterdeschuyter.be/blog/how-to-disable-viewport-scaling-in-ios-10-you-dont-941140811

它适用于 iPhone 6 并且不会阻止滚动。

感谢链接,Aloober:https://***.com/a/41166167/1409261

【讨论】:

【参考方案2】:
$('body').bind('touchmove', function(event)  event.preventDefault() ); // turns off

$('body').unbind('touchmove'); // turns on

【讨论】:

那不是也禁用滚动吗? 这会禁用所有需要在触摸时移动的手势...【参考方案3】:

删除和重新添加元标记对我有用:

function AllowZoom(flag) 
  if (flag == true) 
    $('head meta[name=viewport]').remove();
    $('head').prepend('<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=10.0, minimum-scale=1, user-scalable=1" />');
   else 
    $('head meta[name=viewport]').remove();
    $('head').prepend('<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=0" />');              
  

但是,如果用户放大然后切换到不缩放,则视口将保持缩放状态,并且用户无法再更改缩放。有人对此有解决方案吗?

【讨论】:

content="width=960" 强制它在纵向视图中保持“缩小”状态。 它在 android 4.2 原生浏览器上不起作用,如果您删除缩放,则无法通过恢复元标记属性来重新启用它,就像在此功能中所做的那样。

以上是关于使用 Javascript 启用/禁用 iPhone Safari 的缩放?的主要内容,如果未能解决你的问题,请参考以下文章

Iphone Sdk:是不是可以使用 UISwitch 来启用和禁用 PNS(推送通知服务)?

如何禁用 UITextView 中的复制、粘贴选项并再次启用 iPhone 应用程序?

如何在 iPhone 应用程序中启用/禁用 iTunes 文件共享

使用 javascript 和 asp.net 启用和禁用按钮

如何使用Javascript禁用和启用HTML表?

使用来自javascript的动态ID启用/禁用Telerik asp.net组合框