2014-12-04 53 views
2

有没有办法处理mac的轨迹板上的tap?javascript中的轨迹点击事件/ jquery

我需要在触控板上处理'tap'和'click',特别是在mac上。

我试图

$.event.special.tap = { 
    setup: function(data, namespaces) { 
     var $elem = $(this); 
     $elem.bind('touchstart', $.event.special.tap.handler) 
      .bind('touchmove', $.event.special.tap.handler) 
      .bind('touchend', $.event.special.tap.handler); 
    }, 

    teardown: function(namespaces) { 
     var $elem = $(this); 
     $elem.unbind('touchstart', $.event.special.tap.handler) 
      .unbind('touchmove', $.event.special.tap.handler) 
      .unbind('touchend', $.event.special.tap.handler); 
    }, 

    handler: function(event) { 
     event.preventDefault(); 
     var $elem = $(this); 
     $elem.data(event.type, 1); 
     if (event.type === 'touchend' && !$elem.data('touchmove')) { 
      event.type = 'tap'; 
      $.event.handle.apply(this, arguments); 
     } else if ($elem.data('touchend')) { 
      $elem.removeData('touchstart touchmove touchend'); 
     } 
    } 
}; 

$('.thumb img').bind('tap', function() { 
    //bind tap event to an img tag with the class thumb 
} 

,没有工作。

如何捕获轨迹上的敲击事件?

回答

1

我有这个问题。看来,MacBook上的触控板(例如)并不像触控设备那样触发TouchEvents。而是将手势转换为MouseEvents。

document.addEventListener('mousewheel', function(e) { 
    console.log(e.wheelDelta); 
}); 

document.addEventListener('touchstart', function(e) { 
    console.log(e); 
}); 

在上面的例子,当我试图捕获“捏/缩放”在触控板手势,我实际上是一个滚动轮找回三角洲,好像我按住CTRL键,然后滚动向上或向下,返回120或-120的wheelDelta值。将事件监听器设置为'touchstart'不会按照我的规定写入控制台,除非它位于平板电脑或智能手机等触摸设备上。

很显然,MackBook可以检测到你触摸触控板的时间,因为它能够检测到你的移动,但它似乎并不通过文档。