Свойство 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