我们很高兴地宣布,指针事件规范已成为 W3C 建议!正如 我们之前所说,我们喜欢指针事件,因为它们支持当今所有常见的输入设备——鼠标、笔/手写笔和手指——但它们的设计方式也使得将来可以轻松添加新设备,而现有代码将自动支持新设备。虽然达到建议状态是一个历史性的时刻,但仍有许多工作要做。
指针事件只有在开发人员支持的所有浏览器中都可用时,才是一种可行的解决方案。虽然这一天似乎还很遥远,但 jQuery 基金会致力于尽快让每个开发人员都能够使用指针事件。我们正在开发 PEP,我们的指针事件 polyfill,谷歌已将其从 Polymer 项目转移到 jQuery 基金会。PEP 将被集成到 jQuery UI、jQuery Mobile 和 Dojo 等项目中。我们希望在未来几周内发布我们的第一个版本。如果您有兴趣帮忙,请告诉我们。
微软已经在 IE11 中发布了指针事件的完整实现,他们在 IE10 中也有一个几乎完整的、带前缀的实现。Mozilla 还在 Windows Metro 上的 Firefox 上实现了完整的实现,但目前尚未启用。这两种实现都 通过了 W3C 指针事件测试套件的 100% 测试。您可以在 https://wiki.mozilla.org/Gecko/Touch 上关注 Mozilla 对所有受支持平台的进度。
当然,这个世界并不都是阳光和彩虹。苹果似乎永远不会实现指针事件。因此,谷歌决定不在 Blink 中发布指针事件,而是尝试 扩展触摸事件以获得指针事件的功能。扩展触摸事件的工作正在 触摸事件社区组 中进行,以确保互操作性和标准化。但是,人们有合理的担心,向触摸事件添加多个扩展只会导致更加分散的局面,最终会使情况变得更糟而不是更好。目前还不清楚苹果是否会实现所有这些功能,而添加对悬停的支持将需要笨拙的 API,因为触摸事件中已经存在逻辑。即使将指针事件的功能添加到触摸事件中,笨拙的事件接口也不像鼠标事件那样好,也不容易从鼠标事件过渡到触摸事件。
尽管谷歌目前的态度如此,但他们愿意不断地重新评估发布指针事件是否将有助于推动网络发展。我们希望谷歌能在未来改变主意,而苹果最终也将被迫实现指针事件,因为届时 Safari 将成为唯一一个不支持指针事件的主流浏览器。用于实现指针事件的 Chromium 问题已经位于所有问题(已打开和已关闭)的第 99 个百分位数(按星数排名)。
作为一个社区,我们现在可以塑造网络的未来。我们需要停止让苹果扼杀浏览器供应商和标准机构的工作。我们已经多次看到,怀揣着良好意愿的浏览器供应商成为苹果不愿与标准机构合作以及 WebKit 在移动设备上的主导地位的牺牲品。我们不能让这种情况继续下去。jQuery 基金会致力于推动指针事件等标准的制定,以改善开发人员体验,进而使网络成为每个人都能使用、更易访问的地方。我们可以共同推动网络发展,让标准和更好的 API 胜出。我们可以选择指针事件而不是触摸事件。我们现在就可以做到,使用 PEP。