я в настоящее время это для моих сенсорных событий:Обработка сенсорных событий
if('ontouchstart' in document.body) {
usevkeys = true;
canvas.addEventListener("touchstart",function(e) {evt.call(this,e);},false);
canvas.addEventListener("touchend",function(e) {evt.call(this,e);},false);
canvas.addEventListener("touchmove",function(e) {evt.call(this,e);},false);
}
else {
canvas.addEventListener("mousemove",function(e) {evt.call(this,e);},false);
canvas.addEventListener("click",function(e) {evt.call(this,e);},false);
}
Это прекрасно работает на моем ноутбуке, и на моем телефоне. Тем не менее, я должен задаться вопросом, как это будет реагировать в среде, которая имеет как сенсорный экран, так и обычную мышь? Вызывает ли сенсорные события мыши, например, телефон вызывает события mousemove
?
Что я могу сделать, чтобы убедиться, что это работает?
Я не уверен, что это помогает, но Modernizr использует 'if (('ontouchstart' в окне) || window.DocumentTouch && document instanceof DocumentTouch) {'. Интересно, помогает ли это сузить его? Когда я перечитаю ваш вопрос, я не уверен, что я отвечаю/помогаю. – Ian
Что делать, если вы избавились от 'else {' и '}' и просто оставили его так, что события 'mousemove' и' click' всегда связаны? Таким образом, если есть события касания, они связаны, но обычные события мыши всегда связаны. Если они касаются экрана, происходят события касания, в противном случае происходят события мыши. Или некоторые из событий перекрываются? Такие, как события «touchmove» и «mousemove»? – Ian
Я чувствовал, что, хотя сенсорные события поддерживаются, события мыши могут происходить (без сенсорных событий), если используется мышь USB (возможно, в зависимости от ОС). Я всегда занимался: наблюдал и то, и другое, что отключил прослушиватель событий мыши при первом запуске touchstart ... это экономит ненужные прослушиватели событий и дает вам контроль –