Как включить полосу прокрутки при использовании «ontouchstart / ontouchmove / ontouchend» на Android? - PullRequest
2 голосов
/ 12 февраля 2012

Я хочу создать веб-страницу на мобильных устройствах (как на 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;
    //...
}

Теперь это работает, но я все еще хочу знать:

  1. Есть ли другие лучшие решения по этому поводу?
  2. Почему мы должны использовать "protectDefault ()" в функциях обратного вызова? что нам помешало это?

Спасибо.

...