Я хочу создать веб-страницу на мобильных устройствах (как на Android, так и на iOS) с эффектом смахивания пальцами, но когда я добавляю event.preventDefault()
в ontouchstart
/ ontouchmove
/ ontouchend
, функция прокрутки выполняет полосу прокрутки веб-страница отключена, это катастрофа: (
Я сделал уродливый взлом с помощью scrollTop
, чтобы можно было прокрутить страницу:
element.ontouchmove = function(event) {
event.preventDefault();
var oldScrollTop = document.body.scrollTop;
var dist = final_y - start_y // here start_y is pageY from touchstart and final_y is current pageY
document.body.scrollTop = oldScrollTop - dist > 0 ? oldScrollTop - dist : 0;
//...
}
Теперь это работает, но я все еще хочу знать:
- Есть ли другие лучшие решения по этому поводу?
- Почему мы должны использовать "protectDefault ()" в функциях обратного вызова? что нам помешало это?
Спасибо.