Как отличить полноценную мышь/татч от кликов и событий, сгенеренных Opera Mini/другими браузерами без мыши/тача?

Для определения, является ли событие кликом или событием сгенерированным Opera Mini или другими браузерами без мыши/тача, можно использовать следующий подход:

1. Проверка наличия свойства MouseEvent.buttons или TouchEvent.touches. Когда пользователь выполняет клик или тач-событие, эти свойства обычно имеют значение, отличное от нуля. Однако, в Opera Mini или других браузерах без мыши/тача, эти свойства будут отсутствовать или иметь значение 0.

Например, можно проверить наличие свойства MouseEvent.buttons в условии:

if (event.buttons !== undefined && event.buttons !== 0) {
  // Код для полноценной мыши/тача
} else {
  // Код для событий, сгенерированных Opera Mini или другими браузерами без мыши/тача
}

2. Проверка свойства MouseEvent.sourceCapabilities или TouchEvent.sourceCapabilities. Эти свойства предоставляют информацию о возможностях и источнике события. В случае событий мыши/тача, свойство kind в объекте MouseEvent.sourceCapabilities или TouchEvent.sourceCapabilities будет иметь значение "mouse" или "touch" соответственно. Однако, в браузерах без мыши/тача, это свойство может быть отсутствовать или иметь другое значение.

Пример проверки в условии:

if (event.sourceCapabilities !== undefined && event.sourceCapabilities.kind === "mouse") {
  // Код для полноценной мыши/тача
} else {
  // Код для событий, сгенерированных Opera Mini или другими браузерами без мыши/тача
}

3. Особенности поведения событий в Opera Mini. Opera Mini имеет свои особенности в обработке событий, включая события кликов и сенсорных событий. Например, в Opera Mini событие клика может быть сгенерировано как результат двойного клика элемента, а не фактического нажатия на него. Поэтому, при обнаружении таких случаев можно сделать вывод о том, что это событие было сгенерировано Opera Mini.

4. Другие методы. В зависимости от конкретной ситуации и требований, могут быть другие методы для определения, является ли событие кликом или событием сгенерированным Opera Mini или другими браузерами без мыши/тача. Например, вы можете рассмотреть использование агентского строки браузера или проверку других свойств события.

Важно отметить, что эти методы предоставляют возможность определить характер события, но не гарантируют 100% точности. Различные браузеры и устройства могут иметь разные особенности, и некоторые пользователи могут использовать специальные настройки или расширения, которые могут изменить поведение событий в браузере. Поэтому, рекомендуется тестировать и проверять свои решения в различных сценариях и браузерах, чтобы удостовериться в их надежности и правильной обработке событий.