Questo è stato risposto per la maggior parte, ma si espanderà ...
Fase 1
Il mio obiettivo era quello di consentire lo zoom in certi momenti, e disattivarla agli altri.
// 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');
Fase 2
Il tag viewport sarebbe aggiornare, ma pinch zoom era ancora attivo !! Ho dovuto trovare un modo per ottenere la pagina per raccogliere le modifiche ...
Si tratta di una soluzione di hacking, ma l'opacità del corpo è stata la giustapposizione. Sono sicuro che ci sono altri modi per farlo, ma ecco cosa ha funzionato per me.
// after updating viewport tag, force the page to pick up changes
document.body.style.opacity = .9999;
setTimeout(function(){
document.body.style.opacity = 1;
}, 1);
Fase 3
Il mio problema è stato risolto in gran parte, a questo punto, ma non del tutto. Avevo bisogno di conoscere il livello di zoom corrente della pagina in modo da poter ridimensionare alcuni elementi per adattarli alla pagina (pensate ai marcatori di mappa).
// check zoom level during user interaction, or on animation frame
var currentZoom = $document.width()/window.innerWidth;
Spero che questo aiuti qualcuno. Ho passato diverse ore a sbattere il mio mouse prima di trovare una soluzione.
fonte
2016-04-27 15:43:31
Bello!Sfortunatamente, non riesco a farlo funzionare. La mia situazione è un po 'diversa: sto lavorando con un sito che ha una larghezza di 980 px. Il contenuto va dritto al limite del design, quindi su un iPad, sembra imbarazzante. Ho pensato di impostare il viewport su una larghezza di 1020px per consentire un margine di 20px su entrambi i lati ... ma senza fortuna: 'viewport = document.querySelector (" meta [nome = visualizzazione] "); viewport.setAttribute ('content', 'width = 1020'); ' (solo per qualche contesto: lo sto inserendo in un'istanza Drupal in qualche modo bloccata ... quindi non ho accesso diretto al area della testa e necessità di usare Javascript) – Sam
Borbottare brontolii ... Credo di sapere perché questo non funziona per me. Lo snippet sopra riportato riscriverebbe il valore della larghezza della meta viewport. Quel meta non esiste ancora ... non può cambiarlo se non c'è, giusto? In che modo posso aggiungere quel meta con Javascript? (Accidenti a questa istanza Drupal bloccata! Penso di essere fregato!) – Sam
Questo dovrebbe essere abbastanza facile. Basta scriverlo direttamente. Se stai usando jQuery sarebbe qualcosa del genere: '$ ('head'). Append (' ');' o, senza jQuery: 'document.getElementsByTagName (' head ') [0] .appendChild (...);' – markquezada