45 votes

Détecter les doubles appuis sur l'écran de l'ipad ou de l'iphone à l'aide de javascript

J'aimerais détecter si un utilisateur a tapé deux fois sur un ipad ou un iphone.

Existe-t-il un événement javascript qui fournirait cette fonctionnalité ?

40voto

Jorge Points 289

Cela peut être utilisé pour un double tap ou un double clic. En javascript pur :

 var mylatesttap;
function doubletap() {

   var now = new Date().getTime();
   var timesince = now - mylatesttap;
   if((timesince < 600) && (timesince > 0)){

    // double tap   

   }else{
            // too much time to be a doubletap
         }

   mylatesttap = new Date().getTime();

}

21voto

Dr. Aaron Dishno Points 1609

J'ai créé celui-ci en JavaScript et il semble bien fonctionner. (Je l'ai testé sur mon iPad 2.) C'est essentiellement le code pour ce qui est dit ci-dessus.

 var clickTimer = null;

function touchStart() {
    if (clickTimer == null) {
        clickTimer = setTimeout(function () {
            clickTimer = null;
            alert("single");

        }, 500)
    } else {
        clearTimeout(clickTimer);
        clickTimer = null;
        alert("double");

    }
}

9voto

Abdullah Points 91

J'ai trouvé cette solution sur Stackoverflow quelque part mais j'ai oublié quel message exact. Cela fonctionne pour un double-clic sur un navigateur et un double-clic sur iPhone.

J'utilise 'touchend click' pour détecter le double clic sur le navigateur et l'iPhone. Pour implémenter uniquement sur iPhone, supprimez le clic.

 var timeout;
var lastTap = 0;

$('element').on('touchend click',function(e){
    var currentTime = new Date().getTime();
    var tapLength = currentTime - lastTap;        

    e.preventDefault();
    clearTimeout(timeout);

    if(tapLength < 500 && tapLength > 0){

        //Double Tap/Click

    }else{

        //Single Tap/Click

        timeout = setTimeout(function(){
            //Single Tap/Click code here

            clearTimeout(timeout); 
        }, 500);
    }
    lastTap = currentTime;
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X