Кратко

  • Первый публичный проект W3C от декабря 2012 года предложил независимое от устройства семейство событий для мыши, касания и пера, сохранив совместимость со страницами для мыши.
  • Рекомендация W3C от февраля 2015 года описала события указателя, pointerType, touch-action для обычных жестов браузера и захват указателя при перетаскивании.

У дверей мышиного клуба стоит служащий с одной строкой в книге гостей. Появляется палец. Чтобы старые страницы продолжали работать, браузер иногда выдает ему маску события мыши. Решение полезное, но если коду надо понять, кто пришел на самом деле, маска мешает. Следом входит перо, и гардероб с накладными хвостами уже не спасает.

Первый публичный рабочий проект Pointer Events от W3C, опубликованный 11 декабря 2012 года, объяснял, почему отдельные входы дороги. Сайты были написаны под Mouse Events; для касания и пера приходилось добавлять похожую логику. Событие мыши ради совместимости могло происходить от пальца, создавая двусмысленность. Проект ввел указатель — общий способ описать контакт, направленный на координату экрана.

Общая речь не лишает инструменты характера. PointerEvent может нести pointerType, давление, площадь контакта и наклон. Кнопке достаточно знать о нажатии; программе рисования важно, насколько сильно и под каким углом легло перо. Автор сначала пишет общий путь, затем добавляет детали там, где они действительно меняют работу.

Рекомендация W3C от 24 февраля 2015 года закрепила семейство pointerdown, pointermove, pointerup, pointercancel и события пересечения границ элемента. Имена напоминают привычные мышиные. Идентификатор помогает удерживать нить одного указателя среди нескольких пальцев. Вход стал шире, но план клуба остался узнаваемым.

Старым страницам оставили мост. Рекомендация описывает совместимые Mouse Events, возникающие из других видов указателя. Так кнопка, которая слышит только мышь, может сработать от касания. Но такое событие нельзя автоматически считать свидетельством настоящей мыши. Новый код при необходимости читает pointerType и обходится без догадок.

На сенсорном экране спор начинается с движения пальца. Он тащит карточку сайта или прокручивает страницу браузера? Если браузер вынужден ждать, пока скрипт отменит или разрешит каждое движение, прокрутка тяжелеет. touch-action заранее сообщает, какие обычные жесты допустимы в области. Браузер может решать задачу прокрутки без ежесекундного совета с кодом страницы.

Есть и граница маленького ползунка. Начав перетаскивание, человек легко выводит палец за его прямоугольник. Захват указателя позволяет элементу продолжать получать события того же контакта, пока жест не завершится. Документ 2015 года описывает установку и снятие захвата, а также gotpointercapture и lostpointercapture. Движение не должно обрываться из-за чуть более широкой дуги руки.

У пальца есть площадь соприкосновения, у пера — давление и наклон, у мыши — кнопки и курсор. Общая семья событий экономит повторный код, а специальные поля позволяют рисовать и управлять точнее. Набор общих правил не требует обстругать перо до формы мыши.

История публикаций W3C для Pointer Events 1 ведет от первого публичного проекта 2012 года к рекомендации 2015-го. Перед авторами стояла практическая задача: поддержать страницы, выросшие вокруг мыши, и дать новым экранам прямой способ слышать палец и перо.

Посетитель не обязан знать названия событий. Он хочет нажать кнопку, спокойно прокрутить страницу и довести перетаскивание до конца, даже если палец вышел за маленькую рамку. Мышь остается почетным членом. Правила приема стали разумнее.