На этот вопрос ответили по большей части, но я буду расширяться ...
Шаг 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
Тег видового экрана обновится, но масштабирование по-прежнему будет активным !! Мне нужно было найти способ заставить страницу забрать изменения ...
Это решение для взлома, но переключение непрозрачности тела сработало. Я уверен, что есть другие способы сделать это, но вот что сработало для меня.
// 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;
Надеюсь, это кому-нибудь поможет. Я потратил несколько часов, стуча мышью, прежде чем нашел решение.