Событие Pointerup работает неправильно с Windows Phone 8.1/IE11

Событие pointerup работает неправильно с Win Windows Phone 8.1 и Internet Explorer 11. Я имею в виду, что оно запускается автоматически (сразу после указателя вниз), а не когда ваш палец уходит.

Я сделал пример здесь.

Если вы протестируете его с настольными браузерами или Android-Chrome или iOS-Chrome/Safai, он будет работать правильно.

Есть ли у кого-нибудь обходной путь?


person Xatpy    schedule 20.02.2015    source источник
comment
Проверено на Nokia Lumia 625.   -  person Xatpy    schedule 20.02.2015


Ответы (1)


Вы получаете событие 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
comment
Спасибо! Я попробую :) - person Xatpy; 19.03.2016