2014-01-06 56 views
0

是否有任何類似touchUpOutside是iOS的事件? touchDragInside? touchDragOutside?Javascript中的iOS touchUpOutside事件?

任何類型的事件都是以一個元素上的觸發開始,但是被拖到元素的框架之外?

回答

2

W3C定義了一個touchleave事件,但在我的實驗中,它尚未在Mobile Safari中實現。但是,您可以使用touchstarttouchmove事件的組合解決此:

window.addEventListener('load', function() { // on page load 

    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)) { 
      var event = new CustomEvent("touchleave", { detail: { touches: event.touches, }, bubbles: false, cancelable: false }); 
      element.dispatchEvent(event); 
     } 
    }, false); 

}, false); 

您可以監聽的事件這樣的特定元素:

var box = document.getElementById('box'); 
box.addEventListener('touchleave', function(e) { 
    // Handle the touch leave event here 
}, false); 
+0

謝謝,這代表touchDragOutside,如果我是對的。還必須弄清楚touchDragInside和touchUpOutsite。無論如何,沒有觸摸事件已經存在觸摸元素的.target? – Geri

+0

是的,它是'touchDragOutside'。對於'touchUpOutside',噹噹前觸點下的元素與'touchstart'中的元素不匹配時,您將從'touchend'派發事件。我的答案中有足夠的細節讓你自己去實現這一點。在事件對象中包含元素只是一些測試的補充。 – neilco

+0

Yap。也許我會用一個根控制器來觀察身體的某種視圖對象。 – Geri