【问题标题】:How do you change zoom level dynamically with Javascript?如何使用 Javascript 动态更改缩放级别?
【发布时间】:2012-12-24 08:02:44
【问题描述】:

我正在尝试弄清楚如何在 ios 网页中重置缩放级别。似乎当用户进行缩放放大/缩小时,缩放功能不再起作用。我想要捏手势,但想以编程方式重置缩放。有人对使用 Javascript/jQuery 动态更改缩放有想法吗?

<meta id="viewportMeta" name="viewport" content="user-scalable=1, initial-scale=0.5, maximum-scale=0.5, minimum-scale=0.5" /> $(文档).ready(函数 () { $("#zoomOut").click(function(){ $('meta[name=viewport]').attr('content', 'initial-scale=0.5; maximum-scale1; user-scalable=1;'); }); $("#zoomIn").click(function(){ $('meta[name=viewport]').attr('content', 'initial-scale=1; maximum-scale=1.0; user-scalable=1;'); }); });

【问题讨论】:

  • 您能否说明您的代码是否未按预期执行?或者您是否正在寻求有关如何做到这一点的其他想法?

标签: jquery viewport pinchzoom


【解决方案1】:

------更新------

这在 iOS7 中不再是问题。 Scott Jehl 在 github scottjehl/iOS-Orientationchange-Fix 上有更好的解决方案,适用于 iOS6。

------原始答案------

从这些中得到答案:


Jeremy Keith (@adactio) 在他的博客 Orientation and scale 上有一个很好的解决方案

通过不设置标记的最大比例来保持标记的可伸缩性。

<meta name="viewport" content="width=device-width, initial-scale=1">

然后在加载时使用 javascript 禁用可扩展性,直到使用此脚本再次允许可扩展性时开始手势:

if (navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i)) {
    var viewportmeta = document.querySelector('meta[name="viewport"]');
    if (viewportmeta) {
        viewportmeta.content = 'width=device-width, minimum-scale=1.0, maximum-scale=1.0, initial-scale=1.0';
        document.body.addEventListener('gesturestart', function () {
            viewportmeta.content = 'width=device-width, minimum-scale=0.25, maximum-scale=1.6';
        }, false);
    }
}

【讨论】:

  • 那么当你捏缩放时,为什么它不允许它重置初始比例?
  • 这个问题很老了,但我只是赞成你的答案,因为它是正确的,而且当问题的提问者无法抽出时间通过选择你的正确来感谢你时,这非常烦人。
  • 谢谢 Optox。非常感谢。
  • 谢谢!像魅力一样工作。将代码放在文件中并添加到 head。
  • 使用 JS 更新视口元数据并没有触发我在移动 safari ios7 上的测试中的缩放变化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多