在 Firefox 中“解析”触摸事件

"Parse" touch events in Firefox

本文关键字:触摸 事件 解析 Firefox      更新时间:2023-09-26

我有一个演示,需要在Windows 7触摸平板电脑上运行Firefox。据此,Mozilla已经实现了标准化的触摸API。但是,这不适用于Windows 7平板电脑。这些事件都不会在FF 14中触发。

我们必须使用 MozTouchMove 事件。但它所做的只是调度顺序事件。WI.e. 手指一,然后手指二,然后手指三等。

甚至很难区分两根手指和一根手指。我必须测量更新之间的距离,将我自己的"ID"分配给每个"区域"。之后,要检测两根手指的拖动,我们必须确保解析始终保持不变 - 如果一根手指向上移动,则可能会"取消拖动",因为"第二个"位置被"第一个"位置覆盖。试图想出一种方法。有什么想法吗?

// multitouch event handler for two finger scrolling in x or y
function onTouchMove(event) {
    var eventTouch = new point(event.clientX, event.clientY);
    if (previousTouch.x == 0 && previousTouch.y == 0) {
        previousTouch = new point(eventTouch.x, eventTouch.y);                
        return;
    }

    //filter really close touches
    //in this case, assume single touch and defer to system mouse
    if (previousTouch !== undefined) {
        if (eventTouch.distance(previousTouch) < 6) {
            return;
        }
    }
    fingerIndex ++;
    // only track every other touch to keep fingers consistent
    if( fingerIndex % 2 == 0)
    {
        document.getElementById("finger1").style.left = previousTouch.x + "px";
        document.getElementById("finger1").style.top = previousTouch.y + "px";
        document.getElementById("finger2").style.left = eventTouch.x + "px";
        document.getElementById("finger2").style.top = eventTouch.y + "px";
    }
    previousTouch = eventTouch;
}

您链接到的状态文档日期为 2010 年 7 月 - Mozilla 在两年前就很接近了。因此,您现在正在使用已弃用的单点触控 API 并尝试实现多点触控 - 这注定会变得丑陋。该文档实际上将您指向自 Firefox 12 以来可用的新多点触控 API。这使您可以正确区分触摸,并且文档实际上非常详细地解释了您将如何做到这一点。