Нажатие на левую или правую часть экрана
Как отследить нажатие на левую или правую часть экрана?
|
1. получить координаты клика;
2. получить размер экрана; 3. разделить размер экрана на 2 и сохранить значение в переменную; 4. сравнить "x" координату с размером половины экрана (получен в шаге 3), если значение х-координаты больше, то клик произошел на правой половине, если равно, то клик был точно посередине, иначе на левой. Про прослушивание событий: https://learn.javascript.ru/introduction-browser-events |
Nexus, извините не правильно выразился, нужно отследить нажатие на сенсор экрана
|
Retro_1477, все тоже самое, даже событие.
|
С jq:
$(document).click(function(e){ alert( (e.clientX>$(window).width()/2)?'right':'left' ); }); |
Мне нужно ещё учитывать длительные нажатия, или click сойдёт?
|
Нет, не подойдет, слушайте touchstart.
https://developer.mozilla.org/ru/doc...I/Touch_events |
Надеюсь поможет. Спасибо!
|
Вроде получилось, но выдаётся ошибка.
var el = document.getElementsByTagName('body')[0]; el.addEventListener("touchstart", handleStart, false); el.addEventListener("touchend", handleEnd, false); //el.addEventListener("touchmove", handleMove, false); function handleStart(evt) { evt.preventDefault(); var touches = evt.changedTouches; if(window.innerWidth/2 < touches[0].pageX) button1 = true; button2 = false; if(window.innerWidth/2 > touches[0].pageX){ button2 = true; button1 = false } } function handleEnd(evt) { evt.preventDefault(); var touches = evt.changedTouches; if(window.innerWidth/2 < touches[0].pageX) button1 = false; button2 = false; if(window.innerWidth/2 > touches[0].pageX){ button2 = false; button1 = false } } Вот такая ошибка [Intervention] Unable to preventDefault inside passive event listener due to target being treated as passive. See https://www.chromestatus.com/features/5093566007214080 |
Разобрался, 10 и 21 удалил, всё нормально
|
Часовой пояс GMT +3, время: 07:34. |