2017-09-06 3 views
1

J'ai un bouton, dont je me demandais si vous pouviez (sur les plates-formes mobiles) permettre à l'utilisateur de tenir et glisser le bouton vers le haut. Ce qui se traduit par une fonction appelée:JavaScript - détecter le balayage sur le bouton?

bouton + (bouton balayez vers le haut) == fonction d'appel

Serait-ce possible pour les navigateurs mobiles. MERCI?!?

+0

Bien sûr, la plupart des bibliothèques pour mobile incluent des événements de type "glisser vers le haut", utilisez une bibliothèque ou déterminez comment elles fonctionnent. – adeneo

+0

@adeneo, pourriez-vous recommander une source? (préférable de ne pas jQuery mobile) –

Répondre

0

J'ai réussi à utiliser Hammer.js dans le passé. Vous pouvez le faire de manière native, mais je pense qu'il est globalement plus facile d'utiliser Hammer.js.

https://hammerjs.github.io/

+0

Auriez-vous des conseils sur l'incorporation de ceci dans le JavaScript standard, car je ne suis pas capable de me concentrer sur hammer.js. IE: et l'exemple ?? –

+0

Je dirais que j'ai lu https://hammerjs.github.io/getting-started/, c'est vraiment utile. Vous pouvez également jeter un oeil à ceci: https://jsfiddle.net/uZjCB/183/ (ce qui n'est pas le mien mais je l'ai trouvé utile quand j'utilisais le marteau!) –

0

vous pouvez utiliser cette fonction,:

$(window).load(function(){ 
    detectswipe('btnid',myfunc); 
}); 

function detectswipe(el,func) { 
    swipe_det = new Object(); 
    swipe_det.sX = 0; swipe_det.sY = 0; swipe_det.eX = 0; swipe_det.eY = 0; 
var min_x = 100; //min x swipe for horizontal swipe 
var max_x = 100; //max x difference for vertical swipe 
var min_y = 100; //min y swipe for vertical swipe 
var max_y = 100; //max y difference for horizontal swipe 
var direc = ""; 
ele = document.getElementById(el); 
if(ele==null){ 
    return; 
} 
ele.addEventListener('touchstart',function(e){ 
    var t = e.touches[0]; 
    swipe_det.sX = t.screenX; 
    swipe_det.sY = t.screenY; 
},false); 
ele.addEventListener('touchmove',function(e){ 
    var t = e.touches[0]; 
    swipe_det.eX = t.screenX; 
    swipe_det.eY = t.screenY; 
},false); 
ele.addEventListener('touchend',function(e){ 
    if ((((swipe_det.eX - min_x > swipe_det.sX) || (swipe_det.eX + min_x < swipe_det.sX)) && ((swipe_det.eY < swipe_det.sY + max_y) && (swipe_det.sY > swipe_det.eY - max_y) && (swipe_det.eX > 0)))) { 
     if(swipe_det.eX > swipe_det.sX) direc = "right"; 
     else direc = "left"; 
    } 
    else if ((((swipe_det.eY - min_y > swipe_det.sY) || (swipe_det.eY + min_y < swipe_det.sY)) && ((swipe_det.eX < swipe_det.sX + max_x) && (swipe_det.sX > swipe_det.eX - max_x) && (swipe_det.eY > 0)))) { 
     if(swipe_det.eY > swipe_det.sY) direc = "down"; 
     else direc = "up"; 
    } 
    if (direc != "") { 
     if(typeof func == 'function') func(el,direc); 
    } 
    direc = ""; 
    swipe_det.sX = 0; swipe_det.sY = 0; swipe_det.eX = 0; swipe_det.eY = 0; 
},false); 
} 

function myfunc(el,d){ 
if(d=="up"){ 
    console.log("do Some Work!!");//or any function which you want to call on swipe up/down(matter of prespective,change "up" to down if you want the other way). 
} 
} 

Il détecte la direction swipe par touchevents. J'ai utilisé cette fonction dans mon projet et cela fonctionne parfaitement sur tous les périphériques tactiles :)