像Javascript中的iOS touchUpOutside这样的事件?

时间:2014-01-06 11:24:51

标签: javascript ios touch-event

是否有任何类似touchUpOutside的活动是iOS? touchDragInside? touchDragOutside?

任何类型的事件都是从元素上的touchstart开始,但是被拖到Element的框架之外?

1 个答案:

答案 0 :(得分: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);