Вот довольно хакерское решение.
Измените ваш touchmove
обработчик следующим образом:
document.ontouchmove = function (event) {
if (!event.elementIsEnabled) {
event.preventDefault();
}
};
Тогда для элемента, который вы хотите включить:
element.ontouchmove = function (event) {
event.elementIsEnabled = true;
};
Это работает, потому что:
- Когда на элементе запускается событие
touchmove
, оба этих обработчика событий обрабатывают событие в фазе пузырьков. Это означает, что обработчик элемента touchmove
срабатывает первым, потому что он ближе всего к источнику события.
- Когда два обработчика событий обрабатывают одно и то же событие, они получают один и тот же объект события.
- Вам разрешено устанавливать собственные произвольные свойства для объекта события.
Итак, обработчик элемента touchmove
просто устанавливает настраиваемое свойство для объекта события, а затем обработчик документа touchmove
проверяет это настраиваемое свойство, чтобы определить, следует ли предотвратить действие по умолчанию.