Вы получаете событие pointercancel
?
Если вы не установите touch-action
правильно, то pointercancel
будет отправлено сразу после pointerdown
. Я думаю, это потому, что браузер считает, что была инициирована манипуляция, такая как прокрутка.
Чтобы этого избежать, мы используем:
html.is-pointer-events .touch-grip {
-ms-touch-action: none;
touch-action: none;
}
Обратите внимание, что мы активируем это правило только, если мы используем события указателя Microsoft, потому что в противном случае свойство touch-action будет мешать другим браузерам (например, Chrome).
Мы добавляем is-pointer-events
к document.documentElement.className
, если navigator.msPointerEnabled
истинно (т. е. мы добавляем класс, когда используем onpointerdown
вместо ontouchstart
). Если вы используете modernizr.js, похоже, он предоставляет класс pointerevents
, который вы можете использовать.
Если у вас нет острой необходимости в них и вы не можете позволить себе вложить в это много средств, я бы настоятельно рекомендовал не поддерживать события указателей Microsoft. Для нас их поддержка была дорогой головной болью, и возвращаемая ценность была для нас минимальной.
person
robocat
schedule
17.03.2016