2014-01-04 2 views
0

Я заметил, что когда я пытаюсь перетащить какой-то элемент в мобильный хром, событие touchmove разрастается после некоторого разрыва от touchstart. я написал сценарий, чтобы узнать этот пробел в пикселях:Мертвая зона на событии touchmove в хроме

` мертвую зону

<script type="text/javascript"> 
    window.addEventListener('load', function() { 

     var box = document.getElementById("box"); 
     var status = document.getElementById("status"); 

     var startPoint = 0; 
     var moveStart = false; 

     box.addEventListener('touchstart', function(e) { 
      startPoint = parseInt(e.changedTouches[0].clientX); 
      e.preventDefault(); 
     }); 

     box.addEventListener('touchmove', function(e) { 
      if(moveStart) return; 
      moveStart = true; 
      status.innerHTML = "deadZone: " + (e.changedTouches[0].clientX - startPoint) + "px"; 
      e.preventDefault(); 
     }); 

     box.addEventListener('touchend', function(e) {                                       
      e.preventDefault();                                             
      moveStart = false;                                             
     });                                                  

    });                                                   
</script>                                                  

<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1">                           




`

И мои результаты: 14-30px на правое/левое перетаскивание и 2-10px вверх/вниз. Кажется, что коробка была привязана к smthg в начале ее перемещения. Как я могу избежать этого и начать отслеживать touchmove с реальной точки начала?

+0

Протестировано на Sony Xperia C и Sony Ericsson Live с Walkman – Neka

+0

И в родных приложениях, таких как плейер-плейер, нет перекосов в перетаскивании – Neka

+0

Я воспроизвел его здесь: http://jsbin.com/touchdeadzone/1/quiet - поговорит с командой англичан. – Kinlan

ответ

0

Это ошибка в Chrome для Android (M31 - текущая версия). К счастью, это будет исправлено в ближайшее время и должны быть в M33 или M34: https://code.google.com/p/chromium/issues/detail?id=323677

Основное резюме в том, что Android подавляет события «отстойных», чтобы ваш последний шанс, чтобы предотвратить листание всегда первый TouchMove.

Смежные вопросы