to zostało odebrane w przeważającej części, ale będę rozszerzać ...
Krok 1
Moim celem było umożliwienie powiększenia w pewnych porach i wyłączyć w innych.
// 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');
Krok 2
Znacznik rzutnia będzie aktualizować, ale pinch zoom był nadal aktywny !! Musiałem znaleźć sposób, aby uzyskać stronę, aby odebrać zmiany ...
To rozwiązanie hakerskie, ale przełączanie nieprzezroczystości ciała załatwiło sprawę. Jestem pewien, że są inne sposoby, aby to osiągnąć, ale oto, co sprawdziło się u mnie.
// after updating viewport tag, force the page to pick up changes
document.body.style.opacity = .9999;
setTimeout(function(){
document.body.style.opacity = 1;
}, 1);
Krok 3
Mój problem został rozwiązany przede wszystkim w tym momencie, ale nie całkiem. Potrzebowałem znać aktualny poziom powiększenia strony, aby zmienić rozmiar niektórych elementów, aby zmieściły się na stronie (myślę o znacznikach mapy).
// check zoom level during user interaction, or on animation frame
var currentZoom = $document.width()/window.innerWidth;
Mam nadzieję, że to pomoże komuś. Spędziłem kilka godzin waląc myszką, zanim znalazłem rozwiązanie.
Nice!Niestety, nie mogę sprawić, żeby działało. Moja sytuacja wygląda nieco inaczej: pracuję z witryną o szerokości 980 pikseli. Treść idzie prosto do krawędzi projektu, więc na iPadzie wygląda na niezręczną. Myślałem, że ustawię okienko ekranu na szerokość 1020 pikseli, aby pozwolić na margines 20 pikseli po każdej stronie ... ale bez powodzenia: 'viewport = document.querySelector (" meta [name = viewport] "); viewport.setAttribute ("treść", "szerokość = 1020"); ' (Tylko w pewnym kontekście: umieszczam to w nieco zamkniętej instancji Drupala ... więc nie mam bezpośredniego dostępu do obszar głowy i trzeba użyć Javascript) – Sam
Grumble narzekać ... Myślę, że wiem, dlaczego to nie działa dla mnie. Powyższy fragment przepisałby wartość szerokości meta okna podglądu. Ta meta jeszcze nie istnieje ... nie można jej zmienić, jeśli jej tam nie ma, prawda? W jaki sposób mogę dodać, że meta z Javascriptem? (Cholera to zablokowana instancja Drupala! Myślę, że jestem spieprzona!) – Sam
To powinno być łatwe. Po prostu zapisz to bezpośrednio. Jeśli używasz jQuery, będzie to coś takiego: '$ ('head') .endend ('"); ' lub bez jQuery: ' document.getElementsByTagName ('head') [0] .appendChild (...); ' – markquezada