Pracuję nad aplikacją internetową opartą na iPadzie i muszę zapobiegać nadmiernemu przewijaniu, aby nie wyglądała jak strona internetowa. Obecnie używam tego do zamrożenia widocznego obszaru i wyłączenia nadmiernego przewijania:
document.body.addEventListener('touchmove',function(e){
e.preventDefault();
});
Działa to świetnie, aby wyłączyć nadmierne przewijanie, ale moja aplikacja ma kilka przewijalnych elementów div, a powyższy kod zapobiega ich przewijaniu .
Celuję tylko w system iOS 5 i nowszy, więc uniknąłem hakerskich rozwiązań, takich jak iScroll. Zamiast tego używam tego CSS dla moich przewijalnych elementów div:
.scrollable {
-webkit-overflow-scrolling: touch;
overflow-y:auto;
}
Działa to bez skryptu przewijania dokumentu, ale nie rozwiązuje problemu przewijania div.
Czy bez wtyczki jQuery można zastosować poprawkę overscroll, ale zwolnić z niej moje elementy div $ („. Scrollable”)?
EDYTOWAĆ:
Znalazłem coś, co jest przyzwoitym rozwiązaniem:
// Disable overscroll / viewport moving on everything but scrollable divs
$('body').on('touchmove', function (e) {
if (!$('.scrollable').has($(e.target)).length) e.preventDefault();
});
Okno robocze nadal się przesuwa, gdy przewijasz początek lub koniec elementu div. Chciałbym również znaleźć sposób, aby to wyłączyć.