Có thể ngăn quy mô trang web trong safari trên iOS 10, nhưng nó sẽ liên quan đến nhiều công việc hơn từ phía bạn. Tôi đoán lập luận là một mức độ khó sẽ ngăn các nhà phát triển hàng hóa bỏ "người dùng có thể mở rộng = không" vào mọi thẻ xem và khiến mọi thứ trở nên khó khăn đối với người dùng bị suy giảm thị lực.
Tuy nhiên, tôi muốn thấy Apple thay đổi cách triển khai của họ để có một cách đơn giản (thẻ meta) để vô hiệu hóa hai lần nhấn để thu phóng. Hầu hết những khó khăn liên quan đến sự tương tác đó.
Bạn có thể dừng pinch-to-zoom bằng một cái gì đó như thế này:
document.addEventListener('touchmove', function (event) {
if (event.scale !== 1) { event.preventDefault(); }
}, false);
Lưu ý rằng nếu bất kỳ mục tiêu sâu hơn nào gọi stopPropagation trong sự kiện, sự kiện sẽ không đến được tài liệu và hành vi mở rộng sẽ không bị ngăn chặn bởi người nghe này.
Vô hiệu hóa hai lần nhấn để thu phóng là tương tự. Bạn tắt bất kỳ lần nhấn nào trên tài liệu xảy ra trong vòng 300 mili giây của lần nhấn trước:
var lastTouchEnd = 0;
document.addEventListener('touchend', function (event) {
var now = (new Date()).getTime();
if (now - lastTouchEnd <= 300) {
event.preventDefault();
}
lastTouchEnd = now;
}, false);
Nếu bạn không thiết lập đúng các thành phần biểu mẫu của mình, việc tập trung vào đầu vào sẽ tự động thu phóng và vì bạn hầu như đã vô hiệu hóa thu phóng thủ công, giờ đây sẽ gần như không thể làm mờ. Đảm bảo kích thước phông chữ đầu vào là> = 16px.
Nếu bạn đang cố gắng giải quyết vấn đề này trong WKWebView trong ứng dụng gốc, thì giải pháp đưa ra ở trên là khả thi, nhưng đây là một giải pháp tốt hơn: https://stackoverflow.com/a/31943976/661418 . Và như đã đề cập trong các câu trả lời khác, trong iOS 10 beta 6, Apple hiện đã cung cấp một lá cờ để tôn vinh thẻ meta.
Cập nhật tháng 5 năm 2017: Tôi đã thay thế phương pháp 'kiểm tra độ dài chạm trên touchstart' cũ để vô hiệu hóa pinch-zoom bằng cách tiếp cận 'check event.scale trên touchmove' đơn giản hơn. Nên đáng tin cậy hơn cho mọi người.