这已经得到了大部分的回答,但我会扩展......
步骤1
我的目标是在某些时候启用缩放,并在其他时候禁用它。
// enable pinch zoom
var $viewport = $('head meta[name="viewport"]');
$viewport.attr('content', 'width=device-width, initial-scale=1, maximum-scale=4');
// ...later...
// disable pinch zoom
$viewport.attr('content', 'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no');
第2步
视口标签将更新,但捏缩放仍处于活动状态!我必须找到一种方法来获取页面以获取更改...
这是一个 hack 解决方案,但切换 body 的不透明度就可以了。我敢肯定还有其他方法可以做到这一点,但这对我有用。
// after updating viewport tag, force the page to pick up changes
document.body.style.opacity = .9999;
setTimeout(function(){
document.body.style.opacity = 1;
}, 1);
第 3 步
我的问题在这一点上基本解决了,但还没有完全解决。我需要知道页面的当前缩放级别,以便我可以调整一些元素的大小以适应页面(想想地图标记)。
// check zoom level during user interaction, or on animation frame
var currentZoom = $document.width() / window.innerWidth;
我希望这对某人有所帮助。在找到解决方案之前,我花了几个小时敲打鼠标。