Обнаружение touchstart при обнаружении touchmove

Недавно я работал над проектом, и до сих пор я использовал мобильный эмулятор отладчика Chrome. Это означает, что я смог имитировать прикосновения и поведение перетаскивания с помощью мыши. К сожалению, из-за того, что у меня была только одна мышь, я никогда не мог использовать обе одновременно.

Проект, над которым я работаю, добавляет на страницу два элемента DOM размером с полстраницы, один слева имеет привязанный к нему прослушиватель событий touchmove, а другой справа имеет привязанный к нему прослушиватель событий touchstart. Они оба работают плавно.

Но сегодня вечером я загрузил свой проект в сеть, чтобы проверить некоторые вещи, открыл его на iPad и обнаружил, что могу выполнять только одно действие за раз. Страница не могла обнаружить события touchstart справа, пока я касался слева, а также не могла обнаруживать события touchmove слева, когда я нажимал справа.

Кто-нибудь делал что-нибудь подобное раньше? Нравится обнаружение разных наборов касаний отдельных элементов DOM?

Фрагменты кода немного велики, чтобы включать их сюда, но ссылка на репозиторий github находится здесь: https://github.com/matthewolsson/JoyShtick


person matthewolsson    schedule 21.10.2014    source источник


Ответы (1)


Элементы DOM имеют общий массив касаний. До этого этапа тестирования я исходил из того, что любой отдельный элемент DOM, к которому был применен прослушиватель касаний, имел свой собственный набор соответствующих касаний. Теперь я знаю, что каждый элемент на странице, независимо от его слушателей, вносит свой вклад в единый массив касаний, в котором хранятся все текущие касания на странице.

Зная это, я исправил ситуацию, используя targetTouches сенсорный список. Ссылка дает хорошее резюме, но суть в том, что это единый массив касаний, который заполняется ТОЛЬКО касаниями, которые происходят в элементе DOM, с которого началось первое.

Вы можете найти фантастическое объяснение этого списка здесь ~ (stackoverflow. com/questions/7056026/variation-of-e-touches-e-targettouches-and-e-changedtouches). И последнее, но не менее важное: у W3C есть очень подробный страница о сенсорном событии и всех его функциях.

person matthewolsson    schedule 22.10.2014
comment
Говорит, что я должен ждать 10 часов 0_0 - person matthewolsson; 23.10.2014