Можно ли прокрутить div в Chrome для Android? - PullRequest
5 голосов
/ 02 декабря 2011

Вот фрагмент текста внутри прокручиваемого div.

Я могу прокрутить его двумя пальцами в Chrome для Mac. Я могу прокрутить его одним пальцем на моем iPad. Однако я не могу найти способ прокрутить его в Chrome для Android.

Возможно, есть обходной путь с использованием сенсорного API?

Ответы [ 3 ]

3 голосов
/ 07 ноября 2012

Еще одно быстрое исправление для Chrome для Android (http://chris -barr.com / index.php / entry / scrolling_a_overflowauto_element_on_a_touch_screen_device / )

Сначала создайте функцию, чтобы проверить, является ли онасенсорное устройство ...

function isTouchDevice(){
  try {
    document.createEvent("TouchEvent");
    return true;
  } catch(e) {
    return false;
  }
}

и функция для прокрутки div

function touchScroll(id){
  if( isTouchDevice() ){ //if touch events exist...
    var el = document.getElementById(id);
    var scrollStartPos = 0;

    document.getElementById(id).addEventListener("touchstart", function(event){
      scrollStartPos = this.scrollTop + event.touches[0].pageY;
      event.preventDefault();
    }, false);

    document.getElementById(id).addEventListener("touchmove", function(event){
      this.scrollTop = scrollStartPos - event.touches[0].pageY;
      event.preventDefault();
    },false);
  }
}

... вызов функции, передающей идентификатор элемента

touchScroll("divIdName");
2 голосов
/ 08 января 2013

Все версии Android до 3.0 содержат ошибки переполнения: прокрутка или авто ( информация об ошибке ).

Для тех, кто использует jQuery, здесь есть быстрое решение:

function touchScroll(selector){
      var scrollStartPos = 0;
      $(selector).live('touchstart', function(event) {
        scrollStartPos = this.scrollTop + event.originalEvent.touches[0].pageY;
      });
      $(selector).live('touchmove', function(event) {
        this.scrollTop = scrollStartPos - event.originalEvent.touches[0].pageY;
      });
}

, а затем, если вы используете modernizr:

if (Modernizr.touch) {
    touchScroll($('.myScrollableContent'))
}

, но это не идеально, потому что все сенсорные устройства будут иметь это.

Если вы используете PhoneGap, вы можете сделать это (где-то после того, как PhoneGap начался):

if (window.device && device.platform=="Android" && parseInt(device.version) < 3){
    touchScroll($('.myScrollableContent'))
}
2 голосов
/ 07 декабря 2011

Просматривая отчеты об ошибках по этой проблеме, я обнаружил эту библиотеку JavaScript , которая решает проблему с помощью сенсорных событий.Также сообщается, что это исправлено в Honeycomb, так что, надеюсь, исправление ударит по людям, как только они выпустят сборки Ice Cream Sandwich.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...