Spec-Zone.ru › Web APIs

Свойство PointerEvent: persistentDeviceId

Экспериментально: Это экспериментальная технология .
Перед использованием в производстве внимательно проверьте таблицу совместимости браузеров .

Свойство persistentDeviceId только для чтения интерфейса PointerEvent — это уникальный идентификатор устройства указания, генерирующего PointerEvent. Это обеспечивает безопасный и надёжный способ идентификации нескольких устройств указания (например, ручек), взаимодействующих с экраном одновременно.

persistentDeviceId сохраняется на протяжении всего сеанса работы в браузере. Чтобы избежать риска отслеживания, устройства указания получают новое persistentDeviceId в начале каждого сеанса.

События указания, устройство которых не удалось идентифицировать, получают значение persistentDeviceId 0.

Значение

Целое число или 0, если устройство, генерирующее PointerEvent, не удалось идентифицировать.

Примечание: Из-за ограничений аппаратного обеспечения цифровых планшетов и устройств указания persistentDeviceId может быть недоступно для всех событий указания, особенно со старым оборудованием. Например, устройство указания может не сообщить свой идентификатор оборудования в планшет для pointerdown в срок, чтобы получить persistentDeviceId: вначале оно может быть 0 и измениться на действительное значение для последующих событий в ходе работы.

Примеры

Предположим следующий HTML:

<canvas id="inking-surface" width="1280" height="720"></canvas>

Следующий JavaScript присваивает различный цвет ввода уникальным указателям, взаимодействующим с холстом:

const colorBlue = 0;
const colorGreen = 1;
const colorYellow = 2;
const colors = [colorBlue, colorGreen, colorYellow];

const pointerToColorMap = new Map();
const colorAssignmentIndex = 0;

const canvas = document.querySelector("#inking-surface");

// Listen for a pointerdown event and map the persistentDeviceId to a color
// if it exists and has not been mapped yet
canvas.addEventListener("pointerdown", (e) => {
  if (e.persistentDeviceId && !pointerToColorMap.has(e.persistentDeviceId)) {
    pointerToColorMap.set(e.persistentDeviceId, colors[colorAssignmentIndex]);

    // Bump the color assignment index and loop back over if needed
    colorAssignmentIndex = (colorAssignmentIndex + 1) % colors.length;
  }
});

// Listen for a `pointermove` and get the color assigned to this pointer
// if persistentDeviceId exists and the pointer has been color mapped
canvas.addEventListener("pointermove", (e) => {
  if (e.persistentDeviceId && pointerToColorMap.has(e.persistentDeviceId)) {
    const pointerColor = pointerToColorMap.get(e.persistentDeviceId);
    // Do some inking on the <canvas>
  }
});

Спецификации

Спецификация
Pointer Events
# dom-pointerevent-persistentdeviceid

Совместимость браузеров

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
persistentDeviceId 128 128 Нет 114 Нет 128 Нет 85 Нет Нет 128

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/persistentDeviceId

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API