Обнаружение двойного нажатия на экране ipad или iphone с помощью javascript

Я хочу обнаружить, что пользователь дважды коснулся экрана ipad или iphone.

Существует ли javascript-событие, которое обеспечит эту функциональность?

34
задан Alex W 6 October 2019 в 22:45
поделиться

1 ответ

Могло бы быть поздним (На самом деле да, чертовски поздно), но чистое и легкое решение JS для тех, которые скрываются в будущем:

var tapped="";
function dbtapper(elem=false,arg1, arg2, arg3, timer=1400){
    if(tapped==""){
        //Here is single tap

        tapped = setTimeout(function(){tapclean()}, timer)
        lastclick = elem;
        //variable lastclick is to prevent double clicking from happen
        //when clicking different object with double-click listener.

    } else if(lastclick==elem){
        //Here is double tap, if you want more (triple&beyond),
        //add doubletap/tripletap checker variable into tapclean().
        //and set it to true here!, example included.
        //you could also add more setTimeout to var-tapped so user will
        //have more time to do triple&up taps.

        tapclean();
        //doubletapped=true;
        mypersonalfunc(arg1, arg2, arg3);
    } else {
        tapped = setTimeout(function(){tapclean()}, timer);
        lastclick = elem;
}
}
function tapclean(){
    clearTimeout(tapped);
    tapped="";
    //doubletapper=false;
}

С этим можно легко сделать единственное событие касания, дважды, трижды, в-четвертых... к бесконечности и вне!
Уведомление: для использования проверки элемента вызовите функцию как:
dbtapper(YOURELEMENT), ie: <span onclick="dbtapper(this)">Click Me</span>

Это не вызвало tho, можно использовать его без очень хорошо (dbtapper()), но если необходимо передать аргумент в функцию, удостоверяются, что Вы вводите ложь для первого аргумента, если Вы не указываете на него на элемент.

Without element pointer: dbtapper(false,yourarguments)
With element pointer: dbtapper(document.getElement*******,yourarguments)
Alternatively, you can use an unique elem arg for each element:
                    dbtapper('omega',yourarg) or dbtapper(69,yourarg)
Though this is not recommended if you have a huge amount of double tapping elements.
0
ответ дан 27 November 2019 в 16:11
поделиться
Другие вопросы по тегам:

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