/ / Вимкнути вертикальну прокрутку на мобільних пристроях - javascript, html, css, jquery-mobile, mobile

Вимкнути вертикальне прокручування на мобільних пристроях - javascript, html, css, jquery-mobile, mobile

я використовую touchmove, touchstart і touchend функції з JQuery Mobile. Я намагаюся вимкнути вертикальну прокрутку при цьому touchstart і ввімкнути його назад, коли touchend спрацьовує. Я спробував кілька речей:

  • Додавання overflow: hidden до тіла: Це добре працює для браузера Chrome, але не працює для Firefox Android

  • Прив'язка та розв’язування події прокрутки до тіла, коли touchstart подію звільнено та touched звільнено - я взагалі не працював (я впевнений, що я зробив це неправильно). Нижче код.

Код:

$(document).on("touchstart", ".amount-container", function(event){
$(".notify-cart").addClass("show");
if(event.touches.length == event.changedTouches.length) {
monitor = {
x: event.touches[0].clientX,
y: event.touches[0].clientY
};
}
}).on("touchend", ".amount-container", function(){
$(".notify-cart").removeClass("show");
$("body").removeClass("overflowhide");
monitor = {};
}).on("touchmove mousemove", ".amount-container", function(event){
if(Math.abs(event.changedTouches[0].clientX - monitor.x) > Math.abs(event.changedTouches[0].clientY - monitor.y)) {

}
else{
event.preventDefault();
}
});
// To Prevent Scrolling while Swipe/touchmove
var touchScroll = function( event ) {
event.preventDefault();
};

Я також спробував кілька інших речей. У Firefox нічого не працювало. Чи є кращий спосіб вирішити цю проблему. Дайте мені знати, якщо вам потрібно щось інше.

Відповіді:

0 для відповіді № 1

Я "не позитивний", працюю, але спробуйте замінити

var touchScroll = function( event ) {
event.preventDefault();
};

з

document.body.addEventListener("touchstart", function(e){e.preventDefault();
});