抓住要点
我们很高兴地宣布 指针事件规范 已成为 W3C 建议!正如 我们之前所说,我们喜欢指针事件,因为它支持当今所有常见的输入设备——鼠标、笔/触控笔和手指——但它们的设计方式也使得未来设备可以轻松添加,并且现有代码将自动支持新设备。尽管达到建议状态是一个具有里程碑意义的时刻,但仍有很多工作要做。
指针事件在所有开发人员支持的浏览器中可用之前,并非可行的解决方案。虽然这一天似乎遥不可及,但 jQuery 基金会致力于尽快将可用的指针事件交付到每位开发人员手中。我们正在开发 PEP,我们的指针事件填充程序,谷歌从 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 成为唯一不支持指针事件的主要浏览器时,苹果最终会被迫实现指针事件。实现指针事件的 Chrome 问题 已经位列所有问题(已打开和已关闭)的第 99 个百分位(根据星标数量)。
作为社区,我们现在可以塑造网络的未来。我们需要停止让苹果扼杀浏览器供应商和标准机构的工作。很多次,我们看到浏览器供应商怀着最好的意愿,却成为苹果不愿与标准机构合作以及 WebKit 在移动设备上的主导地位的牺牲品。我们不能让这种情况继续发生。jQuery 基金会致力于推动诸如指针事件之类的标准,以改善开发人员体验,进而使网络成为一个更美好、更方便访问的地方。共同努力,我们可以推动网络发展,让标准和更好的 API 获胜。我们可以选择指针事件而不是触控事件。我们现在就可以做到,使用 PEP。
谢谢!非常感谢。
很遗憾看到权力是如何腐败的
感谢 JQuery 团队!我期待着使用 PEP。我的意思是,无论如何我都需要一个库来正确处理混合的触控/鼠标/笔事件,它最好是一个对已经获得 W3C 正式建议的 API 的填充程序。
到目前为止,我的经验是,几乎每个试图处理触控事件的 Web 应用程序都做错了,并且会破坏同时具有鼠标和触控的混合设备。我所见过的每个使用指针事件或填充程序的库都做得很好。一个例子是 BabylonJS,它巧合地能够在我的旧 nexus 4 上,在 chrome-android 上,使用填充程序,完美地维护一个简单的 60fps WebGL 场景。所以,我不确定他们的性能论据来自哪里,坦率地说,我对谷歌的决定感到困惑。
这是苹果一再不采用社区标准的最新例子。如果他们的替代方案更好,我可以理解,但它们往往更糟糕,或者只是武断的。我最喜欢的例子是 soundcheck:它为什么存在?所以苹果有一个竞争标准来支持 replaygain 以外的标准。为什么 iTunes 使用糟糕的 MP3 编码器而不是开源的 LAME?因为它希望你使用苹果的 AAC 编码器。为什么 Safari 不支持 Opus,即使它是 Web 标准?因为苹果。为什么 iThings 是地球上唯一没有显示为驱动器的闪存存储设备?因为苹果。这完全是荒谬的,更荒谬的是,社区愿意为了迎合苹果的众多狂热的科技恐惧者而退让。停止以牺牲进步为代价创造毫无意义的分裂。
Web 可访问性包括视障和肢体残疾人士,他们在不同设备之间的一致性中受益匪浅。苹果似乎曾经关心教育和改善生活,然后是 iTunes 和 iPhone。最近我没有听到太多关于这方面的营销。只是很多专利诉讼、契约奴役和普遍的统治。
WebKit 团队非常关注性能
http://www.webkit.org/projects/performance/
> 我们对性能倒退采取零容忍政策。
他们查看了指针事件,并且没有确信他们可以在不牺牲性能的情况下实现它们。
这与苹果被认为腐败无关,这更多地与开源的 WebKit 开发人员制定了一项政策并坚持执行有关。
@Ron
感谢您提供 WebKit 性能政策的参考。这清楚地解释了为什么某些东西不会添加到 WebKit 中。虽然 @Drew 提出了几个有效的观点,但我们必须将事情置于透视中。例如,如果苹果向普通用户开放 iOS Flash 文件系统供他们随意操作,你能想象他们会遇到什么样的混乱吗?在用户意外删除重要文件或意外移动目录后,支持 iOS 设备的成本会急剧上升。苹果设计了 iOS 设备,秉持“微波炉”的理念…… 内部结构对用户来说是密封的,是为了他们自己的利益。有时人们会忘记,苹果的 WebKit 项目开启了 Web 浏览器创新新时代,整个行业和世界都从中受益。期待他们以同样的速度跟进每一次创新是不合理的。为了保持高质量的用户体验,需要做很多平衡工作。一旦指针事件满足 WebKit 的性能要求,我相信它就会被添加。在此之前,我赞扬 WebKit 项目没有降低其高标准。
jQuery 真的非常受欢迎。感谢您帮助提高世界生产力。
很棒的文章,我真的很喜欢它们,感谢分享。