精力充沛的 Felipe Gomes 在巴西繁忙的学期之间,很乐意在今年夏天在 Mozilla 实习。在那段时间里,他一直在致力于 Windows 7 上 Firefox 的多点触控支持。这项工作的一个不错的成果是他还找到了将多点触控支持带到 Web 的方法。他制作了一个简短的视频,并写了一些简短的技术信息与之搭配。
这篇文章也已 交叉发布到 Felipe 的个人博客。
Firefox 上的多点触控 来自 Felipe 在 Vimeo 上。
我一直很渴望展示 Firefox 多点触控支持的进展,这段视频展示了一些可能的交互和用例,说明网页和 Web 应用可以使用多点触控设备做什么。
我们正在努力通过 DOM 事件将系统中的多点触控数据公开给常规网页,所有这些演示都构建在该基础之上。它们是简单的 HTML 页面,接收每个触摸点的事件,并使用它们来构建自定义的多点触控体验。
我们还添加了 CSS 支持,以便在您在触摸屏设备上运行时进行检测。使用伪选择器 :-moz-system-metric(touch-enabled)
,如果您的页面在触摸屏设备上查看,则可以为其应用特定的样式。这与物理 CSS 单位(厘米或英寸)一起,可以调整您的 Web 应用以适应触摸屏体验。
Firefox 3.6 将包含 CSS 属性,但不太可能包含下面描述的 DOM 事件。
以下是一个 API 的示例。我们有三个新的 DOM 事件(MozTouchDown
、MozTouchMove
和 MozTouchRelease
),它们类似于鼠标事件,但它们有一个名为 streamId
的新属性,可以唯一地识别在 MozTouch 事件系列中跟踪的同一根手指。以下代码段是第一个演示的代码,我们在此演示中在每个触摸点的 X/Y 位置下移动独立的 <div>
。
var assignedFingers = {};
var lastused = 0;
function touchMove(event) {
var divId;
if (lastused < = 4)
return;
if (assignedFingers[event.streamId]) {
divId = assignedFingers[event.streamId];
}
else {
divId = "trackingdiv" + (++lastused);
assignedFingers[event.streamId] = divId;
}
document.getElementById(divId).style.left = event.clientX + 'px';
document.getElementById(divId).style.top = event.clientY + 'px';
}
document.addEventListener("MozTouchMove", touchMove, false);
document.addEventListener("MozTouchRelease",
function () { lastused--; }, false);
在 维基页面上,您可以看到其他演示的代码片段。关于演示或 API 的任何评论,请在 我的博客文章上发表。我们非常欢迎反馈,并希望就此领域展开一些良好的讨论。希望随着触摸设备(移动设备和笔记本电脑)越来越受欢迎,我们将看到在 Web 上使用触摸和多点触控的新颖和创造性的方法。
17 条评论