JavaScript/jQuery中的Track-pad Tap事件

track-pad tap event in javascript/jquery

本文关键字:Tap 事件 Track-pad 中的 jQuery JavaScript      更新时间:2023-09-26

有什么方法可以处理Mac触控板的水龙头吗?

我需要在触控板上处理"点击"和"点击",尤其是在 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
}

这行不通。

如何在触控板上捕获点击事件?

我也有同样的担忧。例如,MacBook上的触控板似乎不会像实际的触摸设备那样触发TouchEvents。相反,它将手势转换为鼠标事件。

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

在上面的示例中,当我尝试在触控板上捕获"捏合/缩放"手势时,我实际上是从滚轮中获取 Delta,就像我按住 CTRL 然后向上或向下滚动一样,返回的 wheelDelta 值为 120 或 -120。为"touchstart"打开事件侦听器不会像我规定的那样写入控制台,除非它在平板电脑或智能手机等触摸设备上。

显然,MackBook可以检测到您何时触摸触控板,因为它能够检测到您的移动,但它似乎无法通过文档获得。