Очень давно мучаюсь с вопросом.
Нужно сделать zoom страницы(изменяя initial-scale страницы) с помощью pinch-а в мобильных браузерах.
Евент pinch я успешно отловил и врубил preventDefault(), initial-scale в теге meta изменил.
Если код упросить до сути то получается:
el.addEventListener('touchmove', function (e) {
e.preventDefault();
//всякие вычисления и проверки
document.getElementById('viewport').setAttribute('content', 'width=device-width, user-scalable=no, maximum-scale=1, initial-scale=' + zoom);
})
Код отрабатывает как надо, с помощью пинча меняется маштаб страницы и всё хорошо.
Но в safari в ipad при уменьшении initial-scale остается в области видимости только часть страницы и чтобы увидеть остальную часть страницы нужно её "скролить". Такая же проблема и в других браузерах(FF, Chrome), но проявляется она через раз. Обгуглил весь гугл и всё без толку.
Пытался эмулировать двойной tap по body - не помогает.