Điều này đã được trả lời cho hầu hết các phần, nhưng tôi sẽ mở rộng ...
Bước 1
Mục tiêu của tôi là bật tính năng thu phóng tại một số thời điểm nhất định và tắt tính năng này ở những thời điểm khác.
// 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');
Bước 2
Thẻ khung nhìn sẽ cập nhật, nhưng thu phóng chụm vẫn hoạt động !! Tôi phải tìm cách để trang tiếp nhận các thay đổi ...
Đó là một giải pháp hack, nhưng việc chuyển đổi độ mờ của cơ thể đã thực hiện một mẹo nhỏ. Tôi chắc chắn rằng có những cách khác để thực hiện điều này, nhưng đây là những gì hiệu quả với tôi.
// after updating viewport tag, force the page to pick up changes
document.body.style.opacity = .9999;
setTimeout(function(){
document.body.style.opacity = 1;
}, 1);
Bước 3
Vấn đề của tôi hầu như đã được giải quyết tại thời điểm này, nhưng không hoàn toàn. Tôi cần biết mức thu phóng hiện tại của trang để có thể thay đổi kích thước một số yếu tố cho vừa với trang (hãy nghĩ đến các điểm đánh dấu trên bản đồ).
// check zoom level during user interaction, or on animation frame
var currentZoom = $document.width() / window.innerWidth;
Tôi hi vọng nó sẽ giúp ích cho mọi người. Tôi đã dành vài giờ để đập chuột trước khi tìm ra giải pháp.
viewport = document.querySelector("meta[name=viewport]"); viewport.setAttribute('content', 'width=1020');
(Chỉ vì một số ngữ cảnh: Tôi đang đặt nó trong một phiên bản Drupal bị khóa ... vì vậy tôi không có quyền truy cập trực tiếp vào vùng đầu và cần sử dụng Javascript)