เป็นไปได้ที่จะป้องกันการปรับขนาดหน้าเว็บในซาฟารีบน iOS 10 แต่จะมีส่วนร่วมกับคุณมากขึ้น ฉันเดาว่าเหตุผลคือระดับของความยากลำบากควรหยุด devs ผู้ขนส่งสินค้าไม่ให้วาง "user-scalable = no" ลงในแท็กวิวพอร์ตทุกแท็กและทำให้สิ่งต่าง ๆ เป็นเรื่องยากสำหรับผู้ใช้ที่มีปัญหาด้านสายตา
ถึงกระนั้นฉันต้องการเห็น Apple เปลี่ยนการใช้งานของพวกเขาเพื่อให้มีวิธีง่าย ๆ (เมตาแท็ก) ในการปิดการใช้งานการแตะสองครั้งเพื่อซูม ปัญหาส่วนใหญ่เกี่ยวข้องกับการโต้ตอบนั้น
คุณสามารถหยุดการบีบนิ้วเพื่อซูมด้วยสิ่งนี้:
document.addEventListener('touchmove', function (event) {
if (event.scale !== 1) { event.preventDefault(); }
}, false);
โปรดทราบว่าหากเป้าหมายที่ลึกกว่าใด ๆ เรียก stopPropagation ในเหตุการณ์เหตุการณ์จะไม่ถึงเอกสารและพฤติกรรมการปรับสเกลจะไม่สามารถป้องกันได้โดยผู้ฟังนี้
การปิดการใช้งานการแตะสองครั้งเพื่อซูมนั้นคล้ายคลึงกัน คุณปิดการใช้งานการแตะใด ๆ ในเอกสารที่เกิดขึ้นภายใน 300 มิลลิวินาทีของการแตะก่อนหน้า:
var lastTouchEnd = 0;
document.addEventListener('touchend', function (event) {
var now = (new Date()).getTime();
if (now - lastTouchEnd <= 300) {
event.preventDefault();
}
lastTouchEnd = now;
}, false);
หากคุณไม่ตั้งค่าองค์ประกอบแบบฟอร์มของคุณให้ถูกต้องการโฟกัสไปที่อินพุตจะเป็นการซูมอัตโนมัติและเนื่องจากคุณปิดใช้งานการซูมด้วยตนเองเป็นส่วนใหญ่ตอนนี้จะเป็นไปไม่ได้ที่จะเลิกซูม ตรวจสอบให้แน่ใจว่าขนาดแบบอักษรที่ป้อนคือ> = 16px
ถ้าคุณกำลังพยายามที่จะแก้ปัญหานี้ใน WKWebView ใน app พื้นเมือง, การแก้ปัญหาดังกล่าวข้างต้นจะทำงานได้ แต่นี้เป็นทางออกที่ดีกว่า: https://stackoverflow.com/a/31943976/661418 และดังที่กล่าวไว้ในคำตอบอื่น ๆ ใน iOS 10 เบต้า 6 ตอนนี้ Apple ได้จัดทำธงเพื่อเป็นเกียรติแก่เมตาแท็ก
อัปเดตพฤษภาคม 2560:ฉันแทนที่ 'การตรวจสอบความยาวสัมผัสบน touchstart' แบบเก่าของการปิดใช้งานการซูมด้วยการบีบด้วยการตรวจสอบเหตุการณ์ที่ง่ายขึ้น น่าเชื่อถือมากขึ้นสำหรับทุกคน