Как ловить тапы, но не прокручивать в Javascript в Android? - PullRequest
1 голос
/ 09 ноября 2010

Я создаю веб-приложение на Javascript, и я не могу на всю жизнь запустить событие touchstart.Я получаю события touchmove и touchend без проблем.Это проблема, потому что, на мой взгляд, лучший способ различить нажатие и движение прокрутки - обнулить счетчик события touchstart, обновить его на touchmove, а затем сравнить на touchend.Я делаю это, так что я могу сделать некоторые действия в конце нажатия, но не прокрутки.Например, было бы очень странно, если бы после того, как вы прокрутили этот список, открылась страница для элемента в списке, но было бы неплохо иметь возможность нажать на элемент, чтобы открыть его страницу.

Вот что у меня есть:

// FIXME: this doesn't seem to ever fire
el.addEventListener('touchstart', function(e) {
  // make sure that at the start of every touch we're not considered to be moving
  alert("Touch starting");
  app.__touchMoving = 0;
}, false);

el.addEventListener('touchmove', function(e) {
  app.__touchMoving++;
}, false);

el.addEventListener('touchend', function(e) {
  alert("Touch ended. We moved beforehand this many times: " + app.__touchMoving);
  // if we are moving
  if (app.__touchMoving > 0) {
    // stop, since we're dragging, not tapping
      return false;
  }
  // else we're no longer moving, so it was a tap
}

Я никогда не вижу предупреждение touchstart.Если я прокручу, touchend сработает, и app__touchMoving будет иметь какое-то приличное значение.Кстати, я заметил, что иногда touchend может срабатывать несколько раз.

Я что-то здесь упускаю?Многие люди говорят, что на Android (и iPhone) это должно прекрасно работать, но первый слушатель никогда не срабатывает.

Обновление: Я должен упомянуть, что я тестировал наSamsung Galaxy S под управлением Android 2.1.

1 Ответ

0 голосов
/ 10 ноября 2010

Я не знаю, можно ли его использовать: iScroll

...