2011-05-18 2 views
4

Est-il possible d'obtenir la durée d'une touche en utilisant javascript sur les appareils ios (et d'autres si possible)? Je voudrais différencier une presse longue d'un court clic sur une webapp iphone.obtenir la durée d'une touche en javascript

Merci pour votre entrée :)

+1

Je ne suis pas sûr que cela peut arriver, mais vous pouvez trouver quelques réponses en regardant certaines options tactiles jQuery. Surtout, je voudrais vérifier le centre de développement Safari d'Apple pour les réponses. Si cela peut arriver nativement, il vous dira comment y arriver. –

+0

les documents W3C pertinents pour les événements tactiles: https://dvcs.w3.org/hg/webevents/raw-file/tip/touchevents.html –

Répondre

15
$('#element').each(function() { 

    var timeout, 
     longtouch; 

    $(this).bind('touchstart', function() { 
     timeout = setTimeout(function() { 
      longtouch = true; 
     }, 1000); 
    }).bind('touchend', function() { 
     if (longtouch) { 
      // It was a long touch. 
     } 
     longtouch = false; 
     clearTimeout(timeout); 
    }); 

}); 

jsFiddle.

Le violon fonctionne avec un long clic.

+0

hey merci! avec ontouchstart et ontouchend je peux faire cela en événements tactiles je suppose :). Laisse-moi essayer. – cmplieger

+0

@Snippet Je vais faire un montage. – alex

+0

Cela ne fonctionne pas sur FF sur android au moins. Je reçois "short-touch" à chaque fois, peu importe combien de temps je presse ... – Alxandr

3

Jetez un oeil à jQuery mobile http://jquerymobile.com/demos/1.0a4.1/#docs/api/events.html

Il a robinet, et des événements taphold, qui sonne comme il pourrait répondre à vos besoins.

+0

Non je veux le faire moi-même. ne pas compter sur une bibliothèque :) – cmplieger

+0

Eh bien, alors, voici comment jQuery le faire: http://pastie.org/1919250, ne devrait pas être trop difficile à décoder. Il semble qu'ils utilisent des événements vmousedown, qui peuvent être un événement de type "souris virtuelles" supporté par les smartphones, ou quelque chose d'autre (fait par jQuery, que sais-je?), Mais cela devrait suffire pour commencer au moins . – Alxandr

0

Vous pouvez vérifier le temps d'identifier Cliquez ou Long Appuyez sur [jQuery]

function AddButtonEventListener() { 
try { 
var mousedowntime; 
var presstime; 
$("button[id$='" + buttonID + "']").mousedown(function() { 
    var d = new Date(); 
    mousedowntime = d.getTime(); 
}); 
$("button[id$='" + buttonID + "']").mouseup(function() { 
    var d = new Date(); 
    presstime = d.getTime() - mousedowntime; 
    if (presstime > 999/*You can decide the time*/) { 
     //Do_Action_Long_Press_Event(); 
    } 
    else { 
     //Do_Action_Click_Event(); 
    } 
}); 
} 
catch (err) { 
alert(err.message); 
} 
} 
Questions connexes