本文概要介绍了何为Web Intents,为何说Web Intents是有用的。Google在Chrome 19中启用了Web Intents,其在Safari上的实现是通过WebKit达成的,同时Mozilla也正在Web Intents上发力。
Web Intents是个相对较新的类似于RPC的机制,可以实现Web应用间的通信,这是通过在客户端(通常但不限于是网页)与服务(如网页、扩展API、插件、OS处理器等,知道如何处理与加工各自的数据)之间传递数据并返回结果来实现的。整个过程是由User Agent(通常是浏览器)来处理的,它让用户决定由哪个服务来执行与Intent相关的动作。Web Intents类似于Android Intents,最初是由Google在去年提出的,现已被W3C接受为草案文档,并希望包含在HTML.Next中。
Google成为第一个在Google Chrome中实现了Web Intents的公司,其实验版本已经包含在最近发布的Chrome 19当中。要想使用Intents,客户端需要通过<intent>
标签进行声明,指定待执行的action
以及需要传递的数据type
,如下代码片段所示:
<intent action="http://webintents.org/share" type="image/*" />
客户端需要包含进Intent调用代码,对于网页来说其代码如下所示:
var intent = new Intent( "http://webintents.org/share", "image/*", "http://example.com/image.png" ); window.navigator.startActivity(intent);
当Intent被调用时,User Agent会要求用户从已知的服务列表中选择一个服务,然后向所选的服务传递数据(在该例中就是“image.png”),服务会处理数据并有可能返回一个结果。目前,Intent服务需要通过Chrome Web Store注册为Chrome扩展,但未来会有其他的解决方案出现。W3C草案还提到了Explicit Intents,客户端可以通过它指定想要使用的服务,在使用各自的服务这个问题上,User Agent可以通知用户,也可以不通知。如果Web应用的作者想要使用某种服务,那么该选项就很有用了。
目前,Intents支持如下动作:share、view、edit、save、pick与subscribe。如果觉得不够,开发者还可以创建自己的动作。
Web Intents代表了继混搭之后的下一个风潮。相对于仅仅从多个源来聚合数据,Web Intents让属于不同实体的各种服务来进行数据处理成为了可能。可能的用例有:集成第三方搜索结果、编辑图片、登录认证等等。webintents.org网站提供了大量示例,如Twitter发布和短URL等。
由于Google已经将代码提交到了WebKit,我们有理由相信Safari会在未来的版本中包含进Web Intents。Firefox也开始了Intents上的工作,其公开的一个Firefox Bug引起了人们的热议。Mozilla已经决定在Gaia中实现Intents的原型,一旦稳定就会将其移到Gecko中。我们尚不清楚微软在Web Intents上的计划。
站长们不必等到所有主流浏览器都支持Web Intents后才开始行动,他们可以使用JavaScript shim库,一旦浏览器开始支持后,它会自动采用浏览器的实现。