Включить/отключить масштабирование iPhone Safari с помощью Javascript?

У меня есть 1 страница, в которой есть 2 элемента DIV, которые отображаются/скрыты на основе щелчка мышью на кнопках действий с javascript, я хотел бы переключить масштабирование по нажатию кнопки действий.

Я пробовал с javascript ниже, и он меняет метаданные в viewport, но не оказывает никакого эффекта.

Любые предложения?

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

Удаление и повторное добавление метатега работало для меня:

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" />');              
  }
}

Однако, если пользователь увеличивает масштаб и затем переключается на отсутствие масштабирования, окно просмотра остается увеличенным, и пользователь больше не может изменять масштаб. У кого-нибудь есть решение для этого?

Ответ 2

$('body').bind('touchmove', function(event) { event.preventDefault() }); // turns off

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

Ответ 3

Это шаги для отключения масштабирования:

  • Убедите своего PM, что отключение - плохая идея (см. ниже статью).
  • Если он все еще хочет этого, убедите его сильнее.
  • Если он все еще хочет этого, прочитайте эту статью и добавьте preventDefault в gesturestart, как описано в комментарии там: https://wouterdeschuyter.be/blog/how-to-disable-viewport-scaling-in-ios-10-you-dont-941140811

Он работает в iPhone 6 и не блокирует прокрутку.

Спасибо за ссылку, Aloober: fooobar.com/info/83831/...