Нажатие на левую или правую часть экрана
Как отследить нажатие на левую или правую часть экрана?
|
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, время: 23:08. |