История событий указателя и его API сложна и вызывает разногласия, но теперь, когда это фактически стандартный браузер W3C, производители должны начать его поддерживать. Проблема в том, что Apple этого не сделает, а Google, вероятно, не сделает этого, если Apple не передумает.
В течение некоторого времени мы отслеживали историю событий касания и событий указателя, но было разумным предположением, что, как только будет установлен стандарт, производители браузеров примут это решение. Это важно, потому что API событий указателя — это попытка создать общий интерфейс для точечно-ориентированного ввода, независимо от того, был ли он сгенерирован прикосновением, мышью или чем-то более экзотическим.
В начале процесса W3C попытался использовать Apple Touch Event API в качестве стандарта. Однако без участия Apple проект развалился, потому что Apple владеет патентами на технологию и отказывается предоставить бесплатное использование спецификации.
Здесь на сцену выходит Microsoft. Команда IE работала над собственным входным API и предложила его, Pointer Events API, в качестве альтернативы Apple W3C.
На этом этапе казалось, что все складывается хорошо. Pointer API является более общим и может обрабатывать все различные устройства ввода, с которыми вы можете столкнуться, в рамках единого интерфейса.
Mozilla и Microsoft реализовали Pointer Events в своих последних браузерах, а Microsoft даже пожертвовала свой код проекту WebKit. Apple, однако, не включила код и не проявляет интереса к поддержке событий указателя. Google сначала сказал, что будет поддерживать Pointer Events, но потом решил, что нет. Обоснование было частично вопросом эффективности, небольшой проблемой с привязкой событий касания и прокрутки и, что более важно, аргументом в пользу того, что, поскольку Apple не собиралась его поддерживать, у API не было надежды на использование вместо Touch Events.
То есть Google утверждал, что Pointer API без Apple не был бы тем, что программисты использовали бы, потому что это исключило бы рынок iOS из любого такого веб-приложения. Многие разработчики отмечали, что если бы Google поддержал Pointer API, это оставило бы Apple в коде и могло бы заставить его принять альтернативный API. Обратите внимание, что, поскольку Microsoft предоставила код для WebKit, Apple или Google фактически нечего делать для реализации API.
Какими бы ни были достоинства Pointer API, это неправильно или хорошо, что Apple может оказывать такое давление на стандарты.
Последний поворот заключается в том, что Google пытается расширить Touch API, включив в него функции, которые делают его таким же гибким, как Pointer API. Таким образом, он не только не поддерживает стандарт, но и фрагментирует то, что у нас уже есть.
Что мы делаем?
Практическое решение — это слишком распространенное использование полифилла. Команда jQuery работает над Pointer Events Polyfill PEP и надеется на выпуск в ближайшие несколько недель. Он должен обеспечивать возможность использования событий указателя даже в Safari и Chrome. Вопрос только в том, будет ли достаточно быстро?