2013-01-16 6 views
3

J'ai une table contenant plusieurs lignes. Chaque ligne peut être sélectionnée en cliquant une fois sur la ligne. Double-cliquer sur la ligne ouvre la fiche technique que la ligne représente dans la même fenêtre. Lorsque vous utilisez un appareil mobile, le double-clic (double-frappe?) Ne déclenche pas mon double-clic, et le navigateur mobile ne fait que zoomer à la place. Après avoir réfléchi, je pense qu'il est plus logique pour les appareils mobiles d'ouvrir la feuille de données en un simple clic/toucher quand même.Détection si le navigateur/le périphérique prend en charge les événements de double-clic

En ce moment, je détecte si c'est un navigateur de l'appareil mobile, lors de la configuration de l'écouteur d'événement pour la table, avec ce code:

if(/Android|webOS|iPhone|iPad/i.test(navigator.userAgent)) { 
    // Single click event bind, open 
} else { 
    // Single click event bind, select 
    // Double click event bind, open 
} 

Au lieu de compter sur l'agent utilisateur, je woud bien plutôt faire de la détection de certaines fonctionnalités, de sorte que tout appareil incapable de faire un double-clic fonctionne.

J'ai essayé de détecter si l'événement dblclick est disponible sur mon appareil Android, et c'est le cas.
Je suppose que cela a un sens, car le navigateur le supporte, mais l'appareil déclenche juste un événement différent en tapant deux fois. La seule autre chose que je pourrais trouver est de vérifier si les événements touchstart etc sont disponibles, mais cela semble aussi faux que de vérifier l'agent utilisateur.

Y at-il un bon moyen de détecter si le navigateur/client prend en charge les doubles-clics comme prévu?

+0

U utiliser cet événement? $ (orme) .dblclick(); –

+0

@HodayaShalom Oui, c'est l'événement jQuery que j'utilise. Ajout de jQuery à mes tags, pour clarifier que jQuery est disponible dans mon cas. – Wertisdk

Répondre

5

Peut-être essayer d'utiliser un délai d'attente pour vérifier s'il y a un autre clic après le premier clic

$(Elm).click(function(evnt){ 
    clicks++; 
    if (clicks == 1) { 
    setTimeout(function(){ 
     if(clicks == 1) 
     // Single click event bind, open 
     else 
     // Double click event bind, open 
    },2000); 
}); 
+0

Merci pour votre réponse! Mais ce qui précède ne ferait-il pas un simple clic (sélectionner une ligne) impossible pour les appareils qui supportent le double clic? – Wertisdk

+0

Je ne sais pas s'il est possible de double cliquer sur les appareils, mais que vous pouvez contourner le simple clic et vérifier si c'est un double clic. –

Questions connexes