Для определения, было ли событие мышью или тачем, вы можете использовать свойства события, такие как `type` и `touches`. Например:
```javascript
element.addEventListener('mousedown', function(event) {
if (event.type === 'mousedown') {
// Событие вызвано мышью
} else if (event.touches) {
// Событие вызвано тачем
}
});
```
Чтобы избежать вызова дополнительного клика после длительного нажатия, вы можете использовать события `touchstart`, `touchend` и `touchmove`, вместо событий мыши. Например:
```javascript
var startTime;
var longPressInterval = 1000; // Задайте нужное время для считывания длительного нажатия
element.addEventListener('touchstart', function(event) {
startTime = Date.now();
});
element.addEventListener('touchend', function(event) {
var endTime = Date.now();
if (endTime - startTime < longPressInterval) {
// Обработайте короткое касание (обычный клик)
} else {
// Обработайте длительное нажатие
}
});
element.addEventListener('touchmove', function(event) {
event.preventDefault(); // Блокирует событие touchend после перемещения пальца
});
```
Также, вы можете использовать событие `touchmove` для обработки перемещения пальца без вызова клика. В данном коде примерно за одну секунду считывается длительное нажатие, после чего вызывается соответствующая обработка.