创建支持触摸和单击的绑定

Posted

技术标签:

【中文标题】创建支持触摸和单击的绑定【英文标题】:Creating a bind that supports touch and click 【发布时间】:2013-02-12 01:32:57 【问题描述】:

我正在寻找一个绑定,它可以为触摸设备绑定“touchstart”,为桌面设备绑定“click”。

在某些触摸设备上绑定“点击”会在处理点击之前有 500 毫秒的延迟。

使用“typeof window.ontouchstart”将触摸设备与桌面分离不再有效,因为主流浏览器现在支持触摸 (jQuery TouchClick),但鼠标点击不会模拟触摸事件。

jQuery Mobile 有这个功能,as suggested here,但是我正在寻找一个精简的 jQuery 插件来实现这个功能,而不使用 jQuery Mobile 框架。

【问题讨论】:

为什么不绑定两者,并在触摸监听器中设置一个标志,点击监听器可以检查并忽略如果为真? 【参考方案1】:

如果两者都绑定,那么当触发触摸时,忽略后面的点击事件?

var ignoreClick = false;

function touchOrClick(e)
    if (e.type == 'click')
        if (ignoreClick)
            ignoreClick = false;
            return;
        
     else 
        ignoreClick = true;
    
    // do stuff


node.addEventListener('ontouchstart', touchOrClick, false);
node.addEventListener('onclick', touchOrClick, false);

【讨论】:

感谢您的回复。这可行,但我也在寻找更优雅的解决方案。【参考方案2】:

如果您升级到最新版本的 jquery-touchclick,它现在支持两者。

【讨论】:

以上是关于创建支持触摸和单击的绑定的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Angular 2+版本创建触摸事件?

scrollView 上的触摸功能

触摸按钮命令执行问题 | WPF |虚拟机 |视窗 10

win10两根手指单击触摸板的手势不管用

单击/触摸事件的背景颜色更改在触摸设备上不起作用

在 CALayer 上触摸手势