Я делаю мобильный веб-сайт, который использует сенсорные события JavaScript. В iOS Safari и Chrome для Android все работает нормально, но стандартный браузер Android (версия 4.1.2) вызывает у меня проблемы.
Во время сенсорного процесса события touchstart
и touchmove
вызываются, как и ожидалось. Однако одно из действий, выполняемых обработчиком touchmove
, похоже, вызывает преждевременное событие touchcancel
. (Я не уверен, имеет ли это значение, но действие, которое запускает touchcancel
, является модификацией атрибута viewBox
объекта SVG.) Если я закомментирую это действие, процесс касания продолжится нормально (т. е. завершение от touchmove
до touchend
).
Все мои обработчики касаний вызывают функцию preventDefault()
, поэтому проблема не та, что описана в этой ошибке: https://code.google.com/p/android/issues/detail?id=19827..
Я читал, что существует много несоответствий среди браузеров относительно того, когда вызывается touchcancel
. Стандартный браузер Android - единственный, который вызывает у меня проблемы.
Есть ли обходной путь? Например, могу ли я полностью отключить событие touchcancel
? Другая идея, которую я имел, заключалась в том, чтобы обработчик touchcancel
программно запускал другое событие touchstart
/touchmove
, но я не продвинулся в этом очень далеко. Любые идеи были бы хорошы.