Задать вопрос
Inkognitoss
@Inkognitoss
Full-stack разработчик.

Почему touchstart отрабатывает через раз?

В этом примере я печатаю случившееся событие при клике и при таче
https://jsfiddle.net/u5e2dehc/15/
Мне нужно точно знать, произошел ли клик по ссылке мышью или это тач-нажатие. При чем мне неважно, какое это устройство (тач нынче и на десктопах есть)
Однако работает это через раз и зачастую отрабатывает клик на устройствах, где производится тач-касание.

html:
<a href="#" target="blank" >Я ссылка</a>
js:
$('a').on('touchstart click',function(event){
	alert(event.type);
});
  • Вопрос задан
  • 728 просмотров
Подписаться 1 Оценить 4 комментария
Пригласить эксперта
Ответы на вопрос 2
Steein
@Steein
Программист
<a class="href_a" href="#" target="blank">link</a>

$('.href_a').on('touchstart click', function(e) {    
    e.stopPropagation(); //stops propagation
    if(e.type == "touchstart") {
        // Обрабатывать событие touchstart.
    } else if(e.type == "click") {
        // Обработка события click.
    }
});
Ответ написан
Falseclock
@Falseclock
решаю нестандартные задачи
https://jsfiddle.net/Falseclock/47jcvty9/

click - это нажал мышкой и отпустил и в этот ивент входят два ивента: mousedown и mouseup

touchstart и tachend - это тоже самое что mousedown и mouseup

document.getElementById('myhref').ontouchstart = function (event) 
	{
  	var d = new Date();
  	this.touchStartTime = d.getTime();
  	event.preventDefault();
  }
  
document.getElementById('myhref').ontouchend = function (event) 
	{
  	var d = new Date();
  	if ((d.getTime() - this.touchStartTime) < 1000 ) {
  	  	this.click();
  	}
  }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы