ฉันกำลังทำงานกับเว็บแอปที่ใช้ iPad และจำเป็นต้องป้องกันการเลื่อนมากเกินไปเพื่อให้ดูเหมือนหน้าเว็บน้อยลง ฉันกำลังใช้สิ่งนี้เพื่อหยุดวิวพอร์ตและปิดใช้งานการเลื่อนทับ:
document.body.addEventListener('touchmove',function(e){
e.preventDefault();
});
นี้ทำงานได้ดีในการปิดการใช้งานเลื่อน แต่ app ของฉันมี divs เลื่อนหลายและป้องกันโค้ดข้างต้นพวกเขาจากการเลื่อน
ฉันกำหนดเป้าหมายเป็น iOS 5 ขึ้นไปเท่านั้นดังนั้นฉันจึงหลีกเลี่ยงโซลูชันแฮ็กเช่น iScroll แต่ฉันใช้ CSS นี้สำหรับ div ที่เลื่อนได้ของฉัน:
.scrollable {
-webkit-overflow-scrolling: touch;
overflow-y:auto;
}
วิธีนี้ใช้งานได้โดยไม่ต้องใช้สคริปต์ overscroll เอกสาร แต่ไม่ได้แก้ปัญหาการเลื่อน div
หากไม่มีปลั๊กอิน jQueryมีวิธีใดบ้างที่จะใช้การแก้ไขแบบโอเวอร์สโคล แต่ยกเว้น div $ ('. scrollable') ของฉัน
แก้ไข:
ฉันพบสิ่งที่เป็นทางออกที่ดี:
// Disable overscroll / viewport moving on everything but scrollable divs
$('body').on('touchmove', function (e) {
if (!$('.scrollable').has($(e.target)).length) e.preventDefault();
});
วิวพอร์ตยังคงเคลื่อนที่เมื่อคุณเลื่อนผ่านจุดเริ่มต้นหรือจุดสิ้นสุดของ div ฉันต้องการหาวิธีปิดการใช้งานเช่นกัน