मैं एक iPad-आधारित वेब ऐप पर काम कर रहा हूं, और ओवरस्क्रोलिंग को रोकने की आवश्यकता है ताकि यह एक वेब पेज की तरह कम लगे। मैं वर्तमान में व्यूपोर्ट को फ्रीज करने और ओवरक्रोल को अक्षम करने के लिए इसका उपयोग कर रहा हूं:
document.body.addEventListener('touchmove',function(e){
e.preventDefault();
});
यह ओवरस्क्रॉल को अक्षम करने के लिए बहुत अच्छा काम करता है, लेकिन मेरे ऐप में कई स्क्रॉल करने योग्य div हैं, और उपरोक्त कोड उन्हें स्क्रॉल करने से रोकता है ।
मैं iOS 5 और इसके बाद के संस्करण को लक्षित कर रहा हूं, इसलिए मैंने iScroll जैसे हैकी समाधान से परहेज किया है। इसके बजाय मैं अपने स्क्रॉल करने योग्य div के लिए इस CSS का उपयोग कर रहा हूं:
.scrollable {
-webkit-overflow-scrolling: touch;
overflow-y:auto;
}
यह दस्तावेज़ के बिना स्क्रिप्ट को ओवरकॉल करता है, लेकिन div स्क्रॉलिंग समस्या को हल नहीं करता है।
एक jQuery प्लगइन के बिना, क्या ओवरस्क्रॉल फिक्स का उपयोग करने का कोई तरीका है लेकिन मेरे $ ('स्क्रॉल योग्य') डिव को छूट देता है?
संपादित करें:
मैंने पाया कि एक अच्छा समाधान है:
// Disable overscroll / viewport moving on everything but scrollable divs
$('body').on('touchmove', function (e) {
if (!$('.scrollable').has($(e.target)).length) e.preventDefault();
});
व्यूपोर्ट तब भी चलता है जब आप div की शुरुआत या अंत को स्क्रॉल करते हैं। मैं इसे अक्षम करने का एक तरीका खोजना चाहता हूं।