2011-04-21 31 views
7

Hazırlık uyarı eşdeğer: Ben js çok yeniyim ve çoğunlukla örnekler/öğreticiler için web aramaları yapıyor aracılığıyla tarafından aldık.javascript dokunmatik etkileşimleri için 'mouseLeave'

Web'de ve mobil cihazlar (örneğin iPad) hem çalışmalıdır js yazıyorum. Bir touch eşdeğer bulmaya çalışıyorum

widget.view.bind(FLAGS.start, function(e) { 

: gibi

if (navigator.userAgent.search('Mobile') > 0) { 
    window.FLAGS = { 
    start: 'touchstart', 
    end: 'touchend', 
    move: 'touchmove', 
    click: 'click', 
    touchScreen: true 
    }; 
} else { 
    window.FLAGS = { 
    start: 'mousedown', 
    end: 'mouseup', 
    move: 'mousemove', 
    click: 'click', 
    touchScreen: false 
    }; 
} 

Ardından kodda yapabileceğiniz şeyler:

Biz mouse ve touch arasındaki farklar uzakta soyut yardımcı olacak bir kütüphane var mouseleave için benzer bir numara yapabilirim.

Ben move konumunu izleme ve söz konusu widget sınırlayıcı kutusu o karşılaştırarak bir leave olayı yakalamak için yollar hayal edebiliyorum ama touchstart/mousedown ilişki gibi küçük bir liner vardır umut ediyorum.

cevap

7

O önerdi ancak AFAIK uygulamaya oldu: Böyle http://www.quirksmode.org/mobile/advisoryTouch.html

şey (denenmemiş kafamın üst, onu yazma) işe yarayabilecek:

var element; 
document.addEventListener('touchstart', function(event) { 
    event.preventDefault(); 
    var touch = event.touches[0]; 
    element = document.elementFromPoint(touch.pageX,touch.pageY); 
}, false); 

document.addEventListener('touchmove', function(event) { 
    event.preventDefault(); 
    var touch = event.touches[0]; 
    if (element !== document.elementFromPoint(touch.pageX,touch.pageY)) { 
     touchleave(); 
    } 
}, false); 

function touchleave() { 
    console.log ("You're not touching the element anymore"); 
} 
+0

teşekkür ederiz. Bence "uygulanmadı" ile ilgili duymak istediğim şeydi ve örnek bir çözüm için örnek kodları takdir ediyorum. –

+1

yayınınız eskiydi, ancak - touchmove olayı için "changeTouches" olmamalı mı? en azından ipad'lerde dokunma dizisi undefined onTouchMove - karşılaştır http://stackoverflow.com/a/7236327/818732 –

İlgili konular